2017-09-13 17 views
1

1つのDataFrameを2つの異なるcsvファイル(DataFrameの分割)に保存したい - 1つはヘッダのみを含み、もう1つは残りの行を含む。Pyspark - 2つの異なるCSVファイルにデータフレームを書き込む

2つのファイルを同じディレクトリに保存したいので、pandasを使用してcsvファイルを分割する代わりに、すべてのロジックを処理するSparkが可能な限り最適なオプションになります。

これを行う最も効率的な方法は何でしょうか?

ありがとうございました!

+0

サブプロセスコールを実行し、bashで実行します。そのように簡単になるはずです。 – philantrovert

+0

@philantrovert処理〜1TBファイルは、例えばbashでも非常に遅いかもしれません;) –

答えて

2

"df"というデータセットがあるとします。

次のことが可能です。 オプション1は:二度書き:

df.write.(...).option("header", "false").csv(....) 
df.take(1).option("header", "true").csv() // as far as I remember, someone had problems with saving DataFrame without rows -> you must write at least one row and then manually cut this row using normal Java or Python file API 

それとも、手動でヘッダーをカットし、通常のJava APIを使用して、新しいファイルに配置、その後=真とヘッダで一回書くことができます

+0

あなたの答えに感謝します。もう1つの質問は、別のディレクトリに2つのファイルを書き込みスパークしないだろうか?それらを同じディレクトリに保存することは可能でしょうか? – Young

+0

2行目は2行書きませんか? 'take(1)'はデータの最初の行をとり、 'header、true'もヘッダを書きますか? – philantrovert

+0

@Young別のフォルダに書き込んだ後、ファイルを移動する必要があります。不幸にも、ファイルはDataFrameの仕組みとまったく同じように分割されています。すべてのコンテンツを1つのファイルに保存したい場合は、 'repartition(1)'を使用することを忘れないでください。 –

0

01:データ無し

df.to_csv("filename.csv", header=False) 

ヘッダ:ヘッダなしのデータ、

+0

それはいいですが、JavaDocによるとPythonDoc? ;) " メモ:このメソッドは、すべてのデータがドライバのメモリにロードされるので、結果のパンダのDataFrameが小さくなる場合にのみ使用してください。 –

+0

はい、あなたは正しいです! – RetardedJoker

関連する問題