欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > HIVE优化系列之数据倾斜

HIVE优化系列之数据倾斜

2025/6/27 16:37:38 来源:https://blog.csdn.net/qq_47255712/article/details/142653015  浏览:    关键词:HIVE优化系列之数据倾斜

数据倾斜

在hive表中 进行一系列join关联时经常会出现数据倾斜问题,可以通过hint将小表进行广播,从而提高查询的执行效率。
  • 第一种hint方法:/*+ BROADCAST(small_table) */
SELECT /*+ BROADCAST(small_table) */ *
FROM large_table
JOIN small_table ON large_table.id = small_table.id;

这个用法时告诉 Hive 在执行连接操作时将表 small_table 进行广播(即在所有的 Mapper 节点上复制一份),以便在连接时避免数据倾斜。
括号里的 small_table 通常指的是小表。因为广播小表可以减少 Shuffle 操作,提高查询性能。

  • 第二种hint方法:/*+ BROADCASTJOIN(small_table) */
SELECT /*+ BROADCASTJOIN(small_table) */ *
FROM large_table
LEFT JOIN small_table ON large_table.id = small_table.id;

这个用法跟上边一样都是指示Hive 在执行连接时使用广播连接的方式,避免大表和小表之间的 Shuffle 操作,减少网络传输和计算时间。

  • 第三种hint方法:/*+ MAPJOIN(small_table) */
SELECT /*+ MAPJOIN(small_table) */ *
FROM large_table
LEFT JOIN small_table ON large_table.id = small_table.id;

这个用法与上边两个不同,他会强制Hive 将表small_table 作为MapJoin 处理,即在 Mapper 阶段直接连接,而不需要进行Shuffle 操作。通过将小表放入每个Mapper,可以加快连接速度,尤其是在小表较小且能够被完全加载到内存中的情况下。


结论:
三者都用于优化连接操作,尤其在数据倾斜的情况下。
使用这些提示时,需要确保选择的表确实是小表(一般小于200M),以避免内存溢出或性能问题。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com