Pyspark 性能:dataframe.collect() 非常慢

Bar*_*Bar 6 apache-spark apache-spark-sql pyspark

当我尝试在数据帧上进行收集时,似乎花费了太长时间。

我想从数据框中收集数据,将其转换为字典并将其插入到 documentdb 中。但是执行day_rows.collect()时性能似乎很慢

day_rows = self._sc.sql("select * from table")

rows_collect = []

if day_rows.count():
    rows_collect = day_rows.collect()

results = map(lambda row: row.asDict(), rows_collect) 
Run Code Online (Sandbox Code Playgroud)

为什么性能慢?

小智 10

在 .collect() 之前缓存您的数据帧。这将使性能大幅提高。

df.persist() 或 df.cache()

一旦使用完毕,您就可以随时取消坚持。