首页 > 解决方案 > pyspark rdd.map 函数需要 3 分钟才能在 32 行上运行

问题描述

我有一个 csv 文件,我将其转换为 pyspark 数据框,并使用以下命令过滤了汽车的独特品牌:

df.select('make').distinct().collect()

这需要大约一秒钟的时间来执行并从“制造”列返回 32 行独特的汽车品牌。但是当我尝试使用以下命令将结果作为列表获取时:

make_df.select('make').distinct().rdd.map(lambda x: x).collect()

执行大约需要 3 分钟。我是新手,所以我不确定幕后发生了什么才能表达出适当的问题。帮助将不胜感激。

提前致谢

标签: apache-sparkpysparkapache-spark-sql

解决方案


PySpark 中 RDD 操作的性能非常糟糕,因为驱动程序不知道您的 lambda 在做什么,因此没有优化执行图的可能性。

使用 DataFrame API 时,Spark 确切地知道您想要做什么,因此可以优化执行。

视频对该主题非常有帮助。


推荐阅读