hortonworks hdp 2.3.0-Hive0.14 Table T1 ( partition on col1, no bucket, ORC )
应用程序1.2亿行和6gb数据大小 Table T2 ( partition on col2, no bucket, ORC )
约200 m行和6mb数据大小
T1 left outer join on t2 ( t1.col3 = t2.col3 )
上面的查询在tez和mr模式下的最后一个reducer阶段都长时间运行。我还尝试了自动转换true/false和显式mapjoin。
查询仍在最后一个阶段运行,从未结束。
仅供参考-如果t2的数据大小为9k或1gb,则查询完成。
2条答案
按热度按时间ykejflvf1#
但是您是否尝试过为自动转换联接指定大小,尝试过为可以放入内存的小表指定大于的大小。
设置hive.auto.convert.join.noconditionaltask.size=10000000;
cx6n0qe32#
问题可能是每个减速机有太多字节/行。如果应用程序执行被卡在最后一个缩减器中,那么很可能是数据倾斜。要检查它,请从两个表中选择top5col3,skew是指有许多记录具有相同的键值(比如30%)。如果是一个歪斜,那么尝试单独连接歪斜键,然后用所有其他键联合所有键。像这样:
如果应用程序执行卡在最后一个reducer阶段,而不是一个reducer或几个reducer,那么检查bytes.per.reducer配置单元设置,可能它太高了。