PySpark
DataFrame ( pyspark.sql.DataFrame
) をデータフレームに変換したいと思いPandas
ます。非常に非効率な組み込みメソッドがあります(toPandas()
2017 年 2 月にこの問題に関する Wes McKinney の記事と、この jupyter ノートブックでの彼の計算をお読みください)。
その間、このような変換を高速化するためのいくつかの取り組みが行われました。例として、Josh の関数hereがあります。ただし、 +1M 行を から に転送しようとしているので、これは役に立ちませんでしpysaprk.DataFrame
たPandas
。この解決策はうまくいきませんでした。
幸いなことに、 2017 年 7 月 26 日のこの投稿に示されているように、作者のWes、Li、およびHoldenのおかげで、 の機能はintoPandas()
の実装のおかげで大幅に改善されました。そうは言っても、私は Spark 2.3 にアクセスできません (私は Spark 2.1 を使用しています)。Apache Arrow
Spark 2.3
したがって、私の質問は、機能を使用してデータフレームを2.1 よりも古いものに高速Apache Arrow
に変換する方法です。多くの人が の古いバージョンで立ち往生しており、これから恩恵を受けることができると思います。pyspark
Pandas
Spark
Spark
更新 1pyspark
: 最初にファイルに出力してから、強力な方法でファイルをCSV
読み取るように提案されました。私はそれを避ける方法を見つけることを本当に望んでいます!CSV
Pandas
read_csv
更新 2:toPandas()
メソッドの遅さの背後にある理由と考えられる問題については、このディスカッションout of memory
で詳しく説明します
dfSpark = spark.sql(sqlQuery)
df = dfSpark.toPandas() # Very slow / out of memory error