【发布时间】:2020-01-21 05:54:44
【问题描述】:
当 df1 和 df2 具有相同的行并且
df1 和 df2 没有重复值
连接操作 df1.join(df2) 的复杂度是多少?
我的问题是取 O(n^2)
是否可以对数据框进行排序并使其性能更好? 如果不是让我的 pyspark 更快加入的方法是什么?
【问题讨论】:
标签: pyspark pyspark-dataframes
当 df1 和 df2 具有相同的行并且
df1 和 df2 没有重复值
连接操作 df1.join(df2) 的复杂度是多少?
我的问题是取 O(n^2)
是否可以对数据框进行排序并使其性能更好? 如果不是让我的 pyspark 更快加入的方法是什么?
【问题讨论】:
标签: pyspark pyspark-dataframes
即使 df1 和 df2 具有相同的行集并且如果它们没有分区,为了连接它们,spark 必须在连接键上对两个数据帧进行分区。对于 spark 2.3 及更高版本,sort-merge 连接默认连接主力,这将需要对数据帧进行分区和按连接键排序,然后执行连接。两个数据框也必须位于同一位置以进行排序合并连接。
是否可以对数据框进行排序并使其性能更好?如果不是让我的 pyspark 更快加入的方法是什么?
是的,如果您发现某个特定的数据框在使用相同的连接键的连接中一次又一次地使用,那么您可以在连接键上重新分区数据框并将其缓存以供进一步使用。详情请参考以下链接
https://deepsense.ai/optimize-spark-with-distribute-by-and-cluster-by/
【讨论】: