Hive 左外连接长期运行

2024-03-28

Hortonworks HDP 2.3.0 - Hive 0.14

Table T1 ( partition on col1, no bucket, ORC )应用程序 1.2 亿行和 6GB 数据大小Table T2 ( partition on col2, no bucket, ORC )应用程序 2 亿行和 6MB 数据大小

T1 left outer join on t2 ( t1.col3 = t2.col3 )

上面的查询在 tez 和 mr 模式下的最后一个减速器阶段都长时间运行。 我还尝试了自动转换真/假和显式映射连接。

查询仍然在最后一个减速器阶段运行,永远不会结束。

仅供参考 - 如果 T2 的数据大小为 9k 或 1GB,则查询完成。


问题可能是每个减速器有太多字节/行。如果应用程序执行卡在最后single那么很可能是数据倾斜。要检查它,请从两个表中选择前 5 个 col3,倾斜是指有大量记录具有相同键值(例如 30%)。如果是倾斜,则尝试单独加入倾斜键,然后将所有其他键加入 UNION ALL。像这样的事情:

select * from
T1 left outer join on t2 on ( t1.col3 = t2.col3 ) and t1.col3=SKEW_VALUE
union all
select * from
T1 left outer join on t2 on ( t1.col3 = t2.col3 ) and t1.col3<>SKEW_VALUE 

如果应用程序执行卡在最后一个reducer阶段,没有一个reducer或很少的reducer,那么检查bytes.per.reducer hive设置,可能它太高了。

set hive.exec.reducers.bytes.per.reducer=67108864;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive 左外连接长期运行 的相关文章

随机推荐