【发布时间】:2017-07-07 18:32:44
【问题描述】:
有谁知道为什么使用 Python3 的 functools.reduce() 会导致在加入多个 PySpark DataFrames 时比使用 for 循环迭代加入相同的 DataFrames 时性能更差?具体来说,这会导致速度大幅下降,然后出现内存不足错误:
def join_dataframes(list_of_join_columns, left_df, right_df):
return left_df.join(right_df, on=list_of_join_columns)
joined_df = functools.reduce(
functools.partial(join_dataframes, list_of_join_columns), list_of_dataframes,
)
而这个没有:
joined_df = list_of_dataframes[0]
joined_df.cache()
for right_df in list_of_dataframes[1:]:
joined_df = joined_df.join(right_df, on=list_of_join_columns)
任何想法将不胜感激。谢谢!
【问题讨论】:
标签: python python-3.x pyspark spark-dataframe pyspark-sql