分享

hive中group by总结

Alkaloid0515 发表于 2016-1-29 18:44:03 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 13221
hive中group by 提示Expression Not In Group By Key的解决办法


hive中group by的时候

select col_1,col_2 from table_name group by col_1;

会提示:

FAILED: SemanticException [Error 10025]: Line 1:12 Expression not in GROUP BY key ‘col_2’

这里网上查了下,有两种解决方法:

1、不关心col_2的值,且有多个col_2,那么语句改成

select col_1, collect_set( col_2 )[0] from table_name group by col_1;

2、如果每个col_2的值不同且关心col_2的值,那么可以改成

select col_1,col_2 from table_name group by col_1,col_2;


##########################################

group by 操作:

1,Map端聚合:Map端进行部分聚合

hive.map.aggr用于设定是否在Map端进行聚合,默认hive.map.aggr=true,version:0.10.0

另外,hive.groupby.mapaggr.checkinterval=100000用于设定Map端进行聚合的操作条目

2,数据倾斜:

hive.groupby.skewdata设定是否在数据分布不均衡,即发生倾斜时进行负载均衡,当选项为hive.groupby.skewdata=true时,生成的查询计划会有两个MapReduce,在第一个MapReduce中,Map的输出结果会随机地分不到Reduce中,对Reduce做部分聚合操作并输出结果,是相同的Group by key有可能分发到

不同的reduce中,从而达到负载均衡的目的,第二个MapReduce任务在根据预处理的数据按照Group by key分不到Reduce中(保证Group by key 分布同一个Reduce),最后完成最终的聚合操作





没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条