PySpark
DataFrame(pyspark.sql.DataFrame
)をPandas
dataframeに変換したいと思います。組み込みメソッドtoPandas()
は非常に非効率です(この問題については、Wes McKinneyの記事をFenruary 2017 hereに戻し、彼の計算をthis jupyter notebookに読んでください)。Apache Arrowを使用してPySpark DataFrameをパンダに変換する
一方、このような変換を高速化するためにいくつかの努力がなされています。例えば、ジョシュの関数hereがあります。しかし、から1M行をPandas
に転送しようとして以来、それは私の役に立たなかった。 7月26日2017年にthis postに示すよう
幸いにも、著者Wes、LiとHoldenのおかげで、toPandas()
の機能が大幅にSpark 2.3
にApache Arrow
の実装のおかげで改善されました。つまり、私はSpark 2.3(Spark 2.1を使用しています)にアクセスすることはできません。
だから、私の質問は、私が2.1よりも古いSpark
ためPandas
、高速にpyspark
データフレームに変換するApache Arrow
機能を使用する方法です。私は多くの人々がSpark
の古いバージョンで立ち往生しており、これから恩恵を受けることができると思います。
アップデート1:私は最初pyspark
CSV
にファイルを印刷して、Pandas
強力なread_csv
方法からCSV
ファイルを読み取ることが示唆されています。私はそれを避ける方法を見つけることを本当に願っています!
アップデート2:toPandas()
方法の遅さの背後にある理由と可能out of memory
問題はthis discussion
dfSpark = spark.sql(sqlQuery)
df = dfSpark.toPandas() # Very slow/out of memory error