蜂巢:分布式条款在汇总查询中无法正常运行

时间:2018-10-11 07:43:34

标签: hadoop hive mapreduce

我正在MRv2上使用配置单元。我正在写包含聚合函数的查询。然后,我认为我想操纵减速器的分配。因此,我尝试使用DISTRIBUTE子句。

例如,如果我写了一个类似SELECT byear, sex, count(*) FROM customers GROUP BY byear, sex DISTRIBUTE BY byear, sex的查询,并且byear值的数目是5(2001、2002、2003、2004、2005),而性别的值是3(男性,女性,未知),减速器的数量为5 * 3 = 15,并将检索到的数据分配给每个byred值和性别值。

或者如果我像SELECT byear, sex, count(*) FROM customers GROUP BY byear, sex DISTRIBUTE BY byear这样写查询,那么化简器的数量是5。

我期望这种行为。但是在上面的查询中,reducer的数量为1。如果检索到的数据足够小,那没有意义吗?还是在编写查询时弄错了?

customers表包含1,000,000个元组,大小为30MB。

添加

1,我误解了减速器数量的计算方法。我检查了hive.exec.reducers.bytes.per.reducer并计算了file size / hive.exec.reducers.bytes.per.reducer的减速器数量。 我以为DISTRIBUTE子句证明将根据写在该子句中的属性为每个reducer分配数据,但是reducer的数量不等于值类型的数量。

2,我阅读了EXPLAIN结果以检查DISTRIBUTE子句的效果,但是在reault中没有任何区别。

0 个答案:

没有答案