我想将PySpark
DataFrame ( pyspark.sql.DataFrame
)转换为 dataframe Pandas
。有一个toPandas()
非常低效的内置方法(请在此处阅读 Wes McKinney 在 Fenruary 2017 中关于此问题的文章以及他在此 jupyter notebook中的计算)。
与此同时,已经做了一些努力来加快这种转换。一个例子,这里是 Josh 的函数。但是,这对我没有帮助,因为我希望将 +1M 行从 转移pysaprk.DataFrame
到Pandas
,这个解决方案对我不起作用。
幸运的是,正如 2017 年 7 月 26 日的这篇文章所示,感谢作者Wes、Li和Holden ,由于in的实现,功能toPandas()
得到了显着改进。话虽如此,我无法访问 Spark 2.3(我使用的是 Spark 2.1)。Apache Arrow
Spark 2.3
所以,我的问题是如何使用Apache Arrow
功能将数据帧转换pyspark
为Pandas
快Spark
于 2.1 的版本。我认为很多人都坚持使用旧版本,Spark
并且可以从中受益。
更新 1:有人建议我先打印pyspark
到CSV
文件,然后CSV
从Pandas
强大的read_csv
方法读取文件。我真的希望我能找到一种方法来避免这样做!
更新 2:此讨论中详细讨论了方法缓慢的原因toPandas()
和可能的问题out of memory
dfSpark = spark.sql(sqlQuery)
df = dfSpark.toPandas() # Very slow / out of memory error