spark中减少网络shuffle的技巧

Tips on decreasing network shuffle in spark

我在这个用例中加入了 Spark 中的两个数据帧,AB

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

两个问题:

  1. 如何减少网络随机播放,因为 spark UI 显示随机读取大约 30gb。
  2. 任务数量也很大,大约有1,000,000。有什么减少它们的技巧吗?

我试过缓存数据帧A,但令人惊讶的是它只会让工作变慢。 任何帮助将不胜感激。

您可以尝试将 autoBroadcastJoinThreshold 增加到 100MB 以触发地图端连接,或者如果这没有帮助,则显式广播您的 B(较小的)数据框:

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

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