【问题标题】:Tips on decreasing network shuffle in sparkSpark中减少网络洗牌的技巧
【发布时间】:2020-06-06 23:33:54
【问题描述】:

我有这个用例,我在 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,但令人惊讶的是它只会让工作变慢。 任何帮助将不胜感激。

【问题讨论】:

  • 能否发布 spark ui 并尽可能编写代码
  • @Srinivas 恐怕我不能,因为它不是我的个人代码。无论如何,代码更具理论性,对连接没有太多期望。
  • 好的,这也取决于您在代码中使用联接的方式..您可以发布您的 spark-submit 命令吗??
  • 如果只有 100MB 连接表,广播可能会对您有所帮助:jaceklaskowski.gitbooks.io/mastering-spark-sql/…

标签: scala apache-spark hdfs


【解决方案1】:

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

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

这应该完全消除与加入相关的洗牌。

【讨论】:

  • 会试试这个,让你知道。谢谢。
猜你喜欢
  • 2022-12-06
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 2019-02-26
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多