减少spark中网络混乱的技巧

gk7wooem  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(281)

我在spark中加入了两个Dataframe, A 以及 B .

A -> Huge dataframe approx size: 100 TB
B -> Smaller dataframe approx size: 100 MB

两个问题:
如何减少网络洗牌,因为spark用户界面显示洗牌读取约30gb。
任务的数量也是巨大的,大约有1000000个。有什么建议可以减少吗?
我试过缓存Dataframe A 但令人惊讶的是,这只会让工作变慢。任何帮助都将不胜感激。

3phpmpom

3phpmpom1#

你可以试着增加 autoBroadcastJoinThreshold 以触发一个Map端连接,或者如果这没有帮助,显式地广播您的 B (较小)Dataframe:

val result = dfA.join(broadcast(dfB),...

这应该完全消除连接相关的洗牌。

相关问题