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