火花蜂巢表加入策略



我的蜂巢表有140亿个记录(约1TB的大小)和另一个由8亿张记录(2GB Big)的蜂巢表。我想加入他们,我的策略应该是什么?我有一个36个节点群。我使用50位执行人,每个执行人30 GB。

根据我的看法,我的选择是:

  1. 广播2 GB表
  2. 只是盲目地加入2张表(我已经做到了,需要将近4个小时才能完成)

如果我两个桌子都重新分配并加入它们,它会提高性能吗?我观察到在第二种方法中,最后20个任务非常慢,我希望它们正在处理具有更多数据的分区(偏斜数据)。

如果您给每个工人足够的RAM,则较小的表可以适合内存。在这种情况下

看使用MapJoin提示:

SELECT /*+ MAPJOIN(b) */ a.key, a.value
FROM a JOIN b ON a.key = b.key

要点:

如果加入其中的一张桌子都很小,那么连接可以是 仅作为地图作业执行。

有关其使用情况的更多详细信息可以在此处看到:https://cwiki.apache.org/confluence/display/hive/languagemanual joins #languagemanualjoins-mapjoins-mapjoinrictions

相关内容

  • 没有找到相关文章

最新更新