我在pyspark上运行一个应用程序。对于此应用程序,下面是执行程序分发的快照。它看起来像是非均匀分布的。有人可以看看并告诉问题在哪里。
我在大量数据上运行我的应用程序,我正在过滤并连接3个数据集。之后,我正在缓存已加入的数据集,用于生成和聚合不同时间段的功能(意味着我的缓存数据集在循环中生成功能)。在此之后,我正在尝试将这些功能存储在partquet文件中。这个镶木地板文件花费了太多时间。
能帮助我解决这个问题吗?如果您需要更多信息,请与我们联系。
答案 0 :(得分:1)
虽然我最初的建议是尽可能多地使用像连接一样的shuffle操作。但是,如果你想坚持下去,我可以提供的一些建议是通过以下方式调整你的SparkContext:
答案 1 :(得分:0)
如你所说(强调我的):
我正在过滤并加入 3个数据集。之后,我正在缓存已加入的数据集以生成和聚合功能
如果连接键或分组列不是均匀分布,则连接和较小程度上的聚合可能会导致数据的分布偏差 - 这是所需shuffle的自然结果。
一般情况下,你可以做的很少。在特定情况下,可以通过广播或腌制获得一点点,但看起来问题在您的情况下并不是特别严重。