我想将PySparkDataFrame ( 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 ArrowSpark 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