2017-10-04 139 views
0

我有一个相当复杂的查询,需要花费很多时间才能完成。但是,表具有分区,如果在每个分区上独立执行此查询,实际上结果都可以。这种方式将被限制在较小的数据部分,这对我来说很好。是否可以在每个分区上独立执行此类查询?是否可以在每个分区上独立执行查询?

回答

1

要做到这一点的唯一方法是创建一个查询选择一个特定的分区,并使用所有查询之间的联合来巩固结果。我不知道你使用的是什么蜂房版本,但要确保你设置以下属性

set hive.exec.parallel=true; 

查询例如

select sum(a) from table1 where partition1='a' 
union all 
select sum(a) from table1 where partition1='b' 
union all 
select sum(a) from table1 where partition1='c'; 

所触发的并行3个独立的阶段,1个阶段巩固结果。您可以使用

explain 
select sum(a) from table1 where partition1='a' 
union all 
select sum(a) from table1 where partition1='b' 
union all 
select sum(a) from table1 where partition1='c'; 

验证这一点,你应该看到在平行3阶段,这取决于其他3

+0

谢谢1个阶段。可惜这不能自动完成。我的查询时间很长,我有很多分区,所以这样做不会很方便,但总比没有好, – Cob

+0

不好,但它是一种选择,我以前遇到过这种情况,通常我结束了快速创建一个脚本来为我生成查询。祝你好运! – hlagos

相关问题