apache-spark - 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 分钟。我是新手,所以我不确定幕后发生了什么才能表达出适当的问题。帮助将不胜感激。
提前致谢
解决方案
PySpark 中 RDD 操作的性能非常糟糕,因为驱动程序不知道您的 lambda 在做什么,因此没有优化执行图的可能性。
使用 DataFrame API 时,Spark 确切地知道您想要做什么,因此可以优化执行。
该视频对该主题非常有帮助。
推荐阅读
- django - 使用 django 上传 base64 视频文件
- php - Symfony - security.yml 中的参数化 ips
- javascript - 如何在每行前面生成序列号以及如何保存多行数据
- python - 如何有效地删除仅包含 0 作为值的前导行?
- angular - 通过函数进行角度动态属性绑定
- javascript - 我可以将 web worker 用于 ui 组件吗?
- jenkins - Jenkins 似乎停止在 Ubuntu 16.04.4 上监听端口 8080
- javascript - FullCalendar 点击时自动填充事件
- c - 这是打开 .txt 文件的正确方法吗
- yacc - 这个 yacc 语法有什么问题?