3

PySparkDataFrame ( pyspark.sql.DataFrame) をデータフレームに変換したいと思いPandasます。非常に非効率な組み込みメソッドがあります(toPandas() 2017 年 2 月にこの問題に関する Wes McKinney の記事と、この jupyter ノートブックでの彼の計算をお読みください)。

その間、このような変換を高速化するためのいくつかの取り組みが行われました。例として、Josh の関数hereがあります。ただし、 +1M 行を から に転送しようとしているので、これは役に立ちませんでしpysaprk.DataFramePandas。この解決策はうまくいきませんでした。

幸いなことに、 2017 年 7 月 26 日のこの投稿に示されているように、作者のWesLi、およびHoldenのおかげで、 の機能はintoPandas()の実装のおかげで大幅に改善されました。そうは言っても、私は Spark 2.3 にアクセスできません (私は Spark 2.1 を使用しています)。Apache ArrowSpark 2.3

したがって、私の質問は、機能を使用してデータフレームを2.1 よりも古いものに高速Apache Arrowに変換する方法です。多くの人が の古いバージョンで立ち往生しており、これから恩恵を受けることができると思います。pysparkPandasSparkSpark

更新 1pyspark : 最初にファイルに出力してから、強力な方法でファイルをCSV読み取るように提案されました。私はそれを避ける方法を見つけることを本当に望んでいます!CSVPandasread_csv

更新 2:toPandas()メソッドの遅さの背後にある理由と考えられる問題については、このディスカッションout of memoryで詳しく説明します

dfSpark = spark.sql(sqlQuery)
df = dfSpark.toPandas() # Very slow / out of memory error
4

1 に答える 1