【发布时间】:2019-04-30 15:12:04
【问题描述】:
我已经阅读了很多关于如何在 pyspark 中进行高效连接的文章。我发现的实现高效连接的方法基本上是:
- 如果可以,请使用广播加入。 (我通常做不到,因为数据框太大)
- 考虑使用一个非常大的集群。 (我宁愿不要因为 $$$)。
- 使用相同的分区器。
最后一个是我宁愿尝试的,但我在 pyspark 中找不到方法。我试过了:
df.repartition(numberOfPartitions,['parition_col1','partition_col2'])
但这无济于事,直到我停止它仍然需要很长时间,因为 spark get 卡在最后几个工作中。
那么,我如何在 pyspark 中使用相同的分区器并加快我的连接速度,甚至摆脱需要永远进行的洗牌?我需要使用哪个代码?
PD:我查看了其他文章,甚至在 stackoverflow 上,但我仍然看不到代码。
【问题讨论】:
-
你检查过每个分区的行数是否具有可比性?如果不是,您的计算可能会卡在一个特定的分区中,在这种情况下,重新分区的随机混洗会更可取。
-
是的,我做到了。相当平衡。
-
@vikrantrana 你好!非常感谢你回答我。如果需要,我会尝试,但我以其他方式解决了我的问题(因为我发现问题是另一个问题)。我会在这篇文章中回答我自己,如果你有兴趣,可以去看看。
标签: apache-spark pyspark