spark中减少网络shuffle的技巧
Tips on decreasing network shuffle in spark
我在这个用例中加入了 Spark 中的两个数据帧,A
和 B
。
A -> Huge dataframe approx size: 100 TB
B -> Smaller dataframe approx size: 100 MB
两个问题:
- 如何减少网络随机播放,因为 spark UI 显示随机读取大约 30gb。
- 任务数量也很大,大约有1,000,000。有什么减少它们的技巧吗?
我试过缓存数据帧A
,但令人惊讶的是它只会让工作变慢。
任何帮助将不胜感激。
您可以尝试将 autoBroadcastJoinThreshold
增加到 100MB 以触发地图端连接,或者如果这没有帮助,则显式广播您的 B
(较小的)数据框:
val result = dfA.join(broadcast(dfB),...
那应该完全消除与连接相关的洗牌。
我在这个用例中加入了 Spark 中的两个数据帧,A
和 B
。
A -> Huge dataframe approx size: 100 TB
B -> Smaller dataframe approx size: 100 MB
两个问题:
- 如何减少网络随机播放,因为 spark UI 显示随机读取大约 30gb。
- 任务数量也很大,大约有1,000,000。有什么减少它们的技巧吗?
我试过缓存数据帧A
,但令人惊讶的是它只会让工作变慢。
任何帮助将不胜感激。
您可以尝试将 autoBroadcastJoinThreshold
增加到 100MB 以触发地图端连接,或者如果这没有帮助,则显式广播您的 B
(较小的)数据框:
val result = dfA.join(broadcast(dfB),...
那应该完全消除与连接相关的洗牌。