数据倾斜导致配置单元中长时间运行的查询

lf5gs5x2  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(411)

我正在tablea.col1=tableb.col1和tablea.col2=tableb.col2上运行一个类似tablea left join tableb的配置单元查询。tablea有18亿个数据,tableb有3100万个记录。现在,我的连接中的最后一个reducer还没有完成,它运行了很长时间。
可能是因为数据倾斜。我确实尝试了mapjoin,但是查询失败了,因为tabla的数据量很大。有没有其他方法可以更好地处理这些问题?
我能看到的长期运行的任务如下

reduce > copy task(attempt_1498868574233_185232_m_001336_0 succeeded at 8.94 MB/s) Aggregated copy rate(1121 of 2532 at 108.94 MB/s)

在这一步中它到底想做什么?

ryhaxcpt

ryhaxcpt1#

hive.optimize.skewjointrue 配置单元.optimize.skewjoin
默认值:false
添加到:hive 0.6.0
是否启用倾斜连接优化。
您可能还需要调整 hive.skewjoin.key , hive.skewjoin.mapjoin.map.tasks 以及 hive.skewjoin.mapjoin.min.split .
配置单元.skewjoin.key
默认值:100000
添加到:hive 0.6.0
确定是否在join中得到一个skew键。如果在join操作符中看到超过指定数量的行具有相同的键,则认为该键是倾斜连接键。
hive.skewjoin.mapjoin.map.tasks配置单元
默认值:10000
添加到:hive 0.6.0
确定斜联接的后续Map联接作业中使用的Map任务数。它应该与hive.skewjoin.mapjoin.min.split一起使用,以执行细粒度控制。
配置单元.skewjoin.mapjoin.min.split
默认值:33554432
添加到:hive 0.6.0
通过指定最小拆分大小,确定斜联接的后续Map联接作业中最多使用的Map任务数。它应该与hive.skewjoin.mapjoin.map.tasks一起使用,以执行细粒度控制。
https://cwiki.apache.org/confluence/display/hive/configuration+properties

相关问题