我想将一个
与此同时,一些努力已经被做出来使这样的转换更快。例如,Josh的函数here。然而,由于我需要从
幸运的是,正如2017年7月26日这篇文章所示,由于作者Wes、Li和Holden在
更新2: 关于
PySpark
DataFrame (pyspark.sql.DataFrame
)转换为Pandas
dataframe。有一个内置方法toPandas()
,但效率非常低(请阅读Wes McKinney在2017年2月关于这个问题的文章here和他在this jupyter notebook中的计算)。与此同时,一些努力已经被做出来使这样的转换更快。例如,Josh的函数here。然而,由于我需要从
pysaprk.DataFrame
转移+1M行到Pandas
,所以这个解决方案对我没有用。幸运的是,正如2017年7月26日这篇文章所示,由于作者Wes、Li和Holden在
Spark 2.3
中实现了Apache Arrow
,toPandas()
的功能得到了显著改进。也就是说,我无法访问Spark 2.3(我正在使用Spark 2.1)。
那么,我的问题是,我如何使用Apache Arrow
的功能将pyspark
数据框快速转换为Pandas
,以适用于早于2.1版本的Spark
。我认为很多人被困在旧版本的Spark
中,可以从中受益。
pyspark
打印到 CSV
文件中,然后使用 Pandas
强大的 read_csv
方法从 CSV
文件中读取。我真的很希望能找到避免这样做的方法!
更新2: 关于
toPandas()
方法速度缓慢和可能出现的内存不足
问题的原因在this discussion中详细讨论。dfSpark = spark.sql(sqlQuery)
df = dfSpark.toPandas() # Very slow / out of memory error