Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否可以在每个分区上独立执行查询?_Sql_Hive_Hiveql - Fatal编程技术网

Sql 是否可以在每个分区上独立执行查询?

Sql 是否可以在每个分区上独立执行查询?,sql,hive,hiveql,Sql,Hive,Hiveql,我有一个非常复杂的查询,需要花费很多时间才能完成。然而,表有分区,事实上,若这个查询在每个分区上独立执行,结果是可以的。这样的排序将被限制在数据的较小部分,这对我来说很好。是否可以在每个分区上独立执行此类查询?唯一的方法是创建一个选择特定分区的查询,并在所有查询之间使用联合来合并结果。我不确定您使用的配置单元版本,但请确保设置了以下属性 set hive.exec.parallel=true; 查询示例 select sum(a) from table1 where partition1='a

我有一个非常复杂的查询,需要花费很多时间才能完成。然而,表有分区,事实上,若这个查询在每个分区上独立执行,结果是可以的。这样的排序将被限制在数据的较小部分,这对我来说很好。是否可以在每个分区上独立执行此类查询?

唯一的方法是创建一个选择特定分区的查询,并在所有查询之间使用联合来合并结果。我不确定您使用的配置单元版本,但请确保设置了以下属性

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个阶段并行,1个阶段取决于其他3个阶段

谢谢。遗憾的是,这不能自动完成。我的查询很长,而且我有很多分区,所以这样做不是很方便,但总比没有好,不是很好,但这是一种选择,我以前遇到过这种情况,通常我会很快创建一个脚本来为我生成查询。祝你好运