【问题标题】:Non-Uniform distribution of task and data on Pyspark executorsPyspark 执行器上任务和数据的非均匀分布
【发布时间】:2017-09-07 10:15:29
【问题描述】:

我正在 pyspark 上运行一个应用程序。对于这个应用程序,下面是执行者分布的快照。它看起来像非均匀分布。谁能看看问题出在哪里。

描述和我的问题:-

我在海量数据上运行我的应用程序,我在其中过滤和加入 3 个数据集。之后,我缓存连接的数据集以生成和聚合不同时间段的特征(意味着我的缓存数据集在循环中生成特征)。在此之后,我尝试将这些功能存储在 partquet 文件中。这个 parquet 文件占用了太多时间。

谁能帮我解决这个问题?如果您需要更多信息,请告诉我。

【问题讨论】:

    标签: python pyspark executors


    【解决方案1】:

    虽然我最初的建议是尽可能少地使用像连接这样的随机操作。但是,如果您希望坚持下去,我可以提供的一些建议是通过以下方式调整您的 SparkContext:

    • 使用 Kryo 串行器
    • 在通过网络发送之前压缩数据
    • 玩转 JVM 垃圾收集
    • 增加随机播放记忆

    【讨论】:

    • 谢谢@Jack_The_Ripper,你能推荐一些例子吗?
    【解决方案2】:

    正如你所说(强调我的):

    我正在过滤并加入 3 个数据集。之后,我正在缓存连接数据集以生成和聚合特征

    如果连接键或分组列的分布不均匀,则连接和聚合可能会导致数据分布偏斜,这是所需的洗牌的自然结果。

    在一般情况下,您几乎无能为力。在特定情况下,广播或加盐可能会有所收获,但看起来问题在您的情况下并不特别严重。

    【讨论】:

      猜你喜欢
      • 2018-02-06
      • 2011-04-04
      • 1970-01-01
      • 2021-05-16
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      相关资源
      最近更新 更多