0

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

在此处输入图像描述

描述和我的问题:-

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

任何人都可以帮我解决这个问题吗?如果您需要更多信息,请告诉我。

4

2 回答 2

1

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

  • 使用 Kryo 串行器
  • 在通过网络发送之前压缩数据
  • 玩弄你的 JVM 垃圾收集
  • 增加你的随机记忆
于 2017-09-08T02:32:17.443 回答
0

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

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

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

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

于 2017-09-07T16:55:51.277 回答