Weiß jemand, warum die Verwendung von functools.reduce()
von Python3 zu einer schlechteren Performance beim Verbinden mehrerer PySpark DataFrames führen würde als nur iteratives Verbinden derselben Datenrahmen mit einer for
-Schleife? Insbesondere ergibt dies eine massive Verlangsamung durch eine Out-of-Memory-Fehler folgt:Verwenden von Pythons reduce() zum Verbinden mehrerer PySpark 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,
)
während dieses nicht:
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)
Irgendwelche Ideen wäre sehr dankbar. Vielen Dank!