没有使用hive的并行处理

mcvgt66p  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(468)

我在hive中的查询不是并行运行的(40个核心中只有一个是100%),我不明白为什么。我已经设定了选项 hive.exec.parallel 真实的和 hive.exec.parallel.thread.number 到30,但这不符合htop。这使得我的查询非常长(创建一个包含2000000个条目的表需要25分钟)
我查了一下

SELECT COUNT(*) FROM mybigtable;

CREATE TABLE t STORED AS ORC 
    TBLPROPERTIES ("immutable"="true","orc.compress"="SNAPPY") 
    as SELECT x, y, z FROM tt;

SELECT * FROM a JOIN b ON a.x=b.y;

这些查询可以由块并行完成,但它们不是这样做的。我错过什么了吗?还是正常?

jutyujz0

jutyujz01#

此属性hive.exec.parallel的工作方式有点不同。此属性在同一查询中运行并行查询,如下所示:

SELECT COL1, COL2 FROM TABLE1
UNION ALL
SELECT COL3, COL4 FROM TABLE2

在这里,第一个select和第二个select语句是不相关的,因此它们可以并行运行。这种情况下,此属性很有用。
可以通过使用线程运行这些查询来实现您的请求,每个线程打开一个jdbc连接。
希望能有帮助。。。!!!

相关问题