hiveql查询性能优化

0s0u357o  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(307)

随着配置单元查询中连接数的增加,查询将分多个阶段运行并占用大量执行时间。如何提高查询性能。有什么参数需要设置吗?

klh5stk1

klh5stk11#

除上述情况外,当查询的select或where子句不引用右表时,最好使用left-semi-join。
半连接比更一般的内部连接更有效的原因如下。对于左手表中的给定记录,只要找到匹配的记录,配置单元就可以停止在右手表中查找匹配的记录。此时,可以投影左侧表记录中选定的列

imzjd6km

imzjd6km2#

set hive.exec.parallel = True

这是一般性的,使用适当的set命令,我们可以根据集群配置优化查询。

zkure5ic

zkure5ic3#

首先,大表应该按照联接顺序放置在最后一个表中:选择small.,large。从小到大join large on small.joinkey=large.joinkey;您可以使用提示告诉optimazier哪个表最大:

SELECT/*+ STREAMTABLE(large) */ small.*, large.* FROM large
JOIN small ON small.joinkey=large.joinkey;

其次,可以在join by map side join上将小表缓存在内存中:

set hive.auto.convert.join = true;
SELECT a.*, b.* FROM a
JOIN b ON a.joinkey=b.joinkey;

Map联接表的大小由以下设置:

set hive.mapjoin.smalltable.filesize = 1000000;

希望对你有点帮助。德国劳埃德!

相关问题