0
我有一个相当复杂的查询,需要花费很多时间才能完成。但是,表具有分区,如果在每个分区上独立执行此查询,实际上结果都可以。这种方式将被限制在较小的数据部分,这对我来说很好。是否可以在每个分区上独立执行此类查询?是否可以在每个分区上独立执行查询?
我有一个相当复杂的查询,需要花费很多时间才能完成。但是,表具有分区,如果在每个分区上独立执行此查询,实际上结果都可以。这种方式将被限制在较小的数据部分,这对我来说很好。是否可以在每个分区上独立执行此类查询?是否可以在每个分区上独立执行查询?
要做到这一点的唯一方法是创建一个查询选择一个特定的分区,并使用所有查询之间的联合来巩固结果。我不知道你使用的是什么蜂房版本,但要确保你设置以下属性
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
谢谢1个阶段。可惜这不能自动完成。我的查询时间很长,我有很多分区,所以这样做不会很方便,但总比没有好, – Cob
不好,但它是一种选择,我以前遇到过这种情况,通常我结束了快速创建一个脚本来为我生成查询。祝你好运! – hlagos