为啥我无法在 Hive 中使用具有多个插入子句的高级聚合功能?

     2023-04-14     263

关键词:

【中文标题】为啥我无法在 Hive 中使用具有多个插入子句的高级聚合功能?【英文标题】:Why am I unable to use advanced aggregation features with a multiple insert clause in Hive?为什么我无法在 Hive 中使用具有多个插入子句的高级聚合功能? 【发布时间】:2017-01-05 07:35:22 【问题描述】:

我想使用具有高级聚合功能with cube 的多重插入子句将多个聚合值插入 Hive 中的单个表中。 但是,由于未知原因,未插入列集的小计。

当使用列值的默认值 null 以及使用 coalesce 将其替换为字符串时,都会出现此问题。 在任何列中都没有可能导致冲突的空值。 其他高级聚合功能(grouping setsrollup)也会出现此问题。 我希望使用这种插入方法,因为它是执行此操作的最有效方式。

我使用的语法是:

FROM tablename1
INSERT OVERWRITE TABLE tablename2 PARTITION (partcol1=val1) SELECT select_statement1 WHERE where_condition1 GROUP BY col_list WITH CUBE
INSERT OVERWRITE TABLE tablename2 PARTITION (partcol1=val2) SELECT select_statement2 WHERE where_condition2 GROUP BY col_list WITH CUBE ...;

有没有办法解决这个问题,或者这种方式不能使用多重插入子句?

提前感谢您的帮助。

【问题讨论】:

James 你为什么不用动态分区..? 在这种情况下,不使用动态分区有两个原因。 1. 该表包含两个分区,其中一个是在每个插入子句的 where 条件中定义的,因此必须手动设置该值。 2.批量查询的执行环境要求使用静态分区。 【参考方案1】:

此问题似乎特定于 Map-reduce 执行引擎。上面的语法在执行引擎换成Tez后正常执行。

https://issues.apache.org/jira/browse/HIVE-15581

【讨论】:

为啥在具有多个连接的 WHERE 子句中,子查询比文字值执行得更好?

】为啥在具有多个连接的WHERE子句中,子查询比文字值执行得更好?【英文标题】:WhywouldasubqueryperformbetterthanalitteralvalueinaWHEREclausewithmultiplejoins?为什么在具有多个连接的WHERE子句中,子查询比文字值执行得更好?【发布时间】:... 查看详情

何时在 hive QL 中使用 sort By 子句

】何时在hiveQL中使用sortBy子句【英文标题】:WhentousesortByclauseinhiveQL【发布时间】:2019-04-2208:55:03【问题描述】:我检查了hive中sortby与orderby子句之间的区别。当需要总排序时使用排序依据,而当有多个减速器和输入到减速器需... 查看详情

使用JPA在Sql中具有不同值的多个语句where子句

】使用JPA在Sql中具有不同值的多个语句where子句【英文标题】:MultiplesstatementswhereclausewithdifferentsvaluesinSqlusingJPA【发布时间】:2018-10-2308:39:52【问题描述】:大家好,我正在使用JPA为我的项目进行本机查询,但我不知道如何执行i... 查看详情

Hive:无法在具有 100 个或更多分区列的表中插入数据错误:在最大长度为 767 的列“PART_NAME”中

】Hive:无法在具有100个或更多分区列的表中插入数据错误:在最大长度为767的列“PART_NAME”中【英文标题】:Hive:Unabletoinsertdataintablewith100ormorepartitioncolumnsError:incolumn"PART_NAME"thathasmaximumlengthof767【发布时间】:2017-06-2306:35... 查看详情

无法在具有自定义分隔符的配置单元中插入数据

】无法在具有自定义分隔符的配置单元中插入数据【英文标题】:unabletoinsertdatainhivehavingcustomdelimiter【发布时间】:2016-10-3019:28:42【问题描述】:我正在尝试学习hive,这可能是一个愚蠢的问题,但是我在hive中创建了一个表,如... 查看详情

进入 Hive 表 - 非分区表到具有多个分区的分区表 - 无法插入目标表,因为列号/类型

】进入Hive表-非分区表到具有多个分区的分区表-无法插入目标表,因为列号/类型【英文标题】:intoHivetable-NonPartitionedtabletoPartitionedtablehavingmultiplepartitions-Cannotinsertintotargettablebecausecolumnnumber/types【发布时间】:2021-01-0704:54:27【问... 查看详情

进入 Hive 表 - 非分区表到具有多个分区的分区表 - 无法插入目标表,因为列号/类型

】进入Hive表-非分区表到具有多个分区的分区表-无法插入目标表,因为列号/类型【英文标题】:intoHivetable-NonPartitionedtabletoPartitionedtablehavingmultiplepartitions-Cannotinsertintotargettablebecausecolumnnumber/types【发布时间】:2021-01-0704:54:27【问... 查看详情

在 where 子句中具有多个条件的 PDO 准备语句

...clause【发布时间】:2013-12-3116:30:33【问题描述】:如果我使用PDO准备好的语句,并且我有这样的查询:SELECTcat_name,cat_id_PK,cat_amountFROMcategoriesWHEREmonth=?ANDis_recurring 查看详情

Hive:如何比较 WHERE 子句中具有复杂数据类型的两列?

】Hive:如何比较WHERE子句中具有复杂数据类型的两列?【英文标题】:Hive:HowdoIcomparetwocolumnsinWHEREclausehavingcomplexdatatypes?【发布时间】:2018-09-0509:43:29【问题描述】:我有一个Hive表作为我的源表。我还有一张作为目标的蜂巢表。... 查看详情

为啥在具有相同变量的语句中使用多个等号?

】为啥在具有相同变量的语句中使用多个等号?【英文标题】:Whyusemorethanoneequalsigninastatementwiththesamevariable?为什么在具有相同变量的语句中使用多个等号?【发布时间】:2018-04-1710:58:55【问题描述】:我遇到了使用具有相同变... 查看详情

在 ON CONFLICT 子句中使用多个冲突目标

】在ONCONFLICT子句中使用多个冲突目标【英文标题】:Usemultipleconflict_targetinONCONFLICTclause【发布时间】:2016-06-2314:47:49【问题描述】:我在表col1、col2中有两列,它们都是唯一索引(col1是唯一的,col2也是唯一的)。我需要在插入... 查看详情

在插入语句中使用语句 HIVE EMR AWS

...tHIVEEMRAWS【发布时间】:2019-04-0219:01:07【问题描述】:Hive无法识别我在INSERT命令中的WITH语句。我怎样才能让hive明白这一点?我创建了外部配置单元表来存储此查询中引用的所有数据。一切正常,数据可用。这是将输出插入到chur... 查看详情

无法在具有聚合值的 HAVING 子句中使用来自子查询表连接的单值列

】无法在具有聚合值的HAVING子句中使用来自子查询表连接的单值列【英文标题】:Unabletousesingle-valuedcolumnfromsubquerytablejoininHAVINGclausewithaggregatevalue【发布时间】:2021-02-0108:34:24【问题描述】:我提出这个问题的相关问题here对于相... 查看详情

hive如何使用groupingsets

...过GROUPINGSETS子句,你可采用多种方式对结果分组,而不必使用多个SELECT语句来实现这一目的。这就意味着,能够减少响应时间并提高性能。在Hive0.10.0版本中添加了Groupingsets,CUBE和ROLLUP运算符以及GROUPING__ID函数。参见HIVE-2397,HIVE... 查看详情

hive如何使用groupingsets

...过GROUPINGSETS子句,你可采用多种方式对结果分组,而不必使用多个SELECT语句来实现这一目的。这就意味着,能够减少响应时间并提高性能。在Hive0.10.0版本中添加了Groupingsets,CUBE和ROLLUP运算符以及GROUPING__ID函数。参见HIVE-2397,HIVE... 查看详情

如何从具有动态分区的选择查询中插入 Hive 中的列?

...计算。假设示例中的key_2始终有10个字符。我想在分区中使用的最后3个字符。我需要动态分区。我的表是这样的:DROPTABLEexam 查看详情

如何使用 HIVE 在 WHERE 语句中对 OR 子句进行分组

】如何使用HIVE在WHERE语句中对OR子句进行分组【英文标题】:HowdoyougroupORclauseinWHEREstatementusingHIVE【发布时间】:2015-07-0823:51:02【问题描述】:我想通过以下方式查询(statement1ANDstatement2AND(statement3ORstatement4))这是我的hive查询,我验... 查看详情

JPA Group by 具有多个字段

...iplefield【发布时间】:2016-11-1206:36:43【问题描述】:我在使用命名查询blog.findBlogs时遇到以下错误“您的select和having子句必须只包含也出现在您的分组子句中的聚合或值。”在select子句中,我使用了b.id,因此它必须允许无错误地... 查看详情