2017-05-22 9 views
0

は、私は、出力JSONに問題がある避け分割JSON出力は、スパークV2.1とPythonを使って(V。2.1)

sqlContext.read.json("path/data.json") 

でJSONファイルをロードします。空と奇妙な名前を持つ他の1:

part-r-00000-f9ec958d-ceb2-4aee-bcb1-fa42a95b714f 

はです

df.write.json("path/test.json") 

データは2つの空のファイルが含まれたフォルダと呼ばれるtest.json(ないファイル)に保存されている以下のコマンドを使用してとにかく、きれいな単一のjson出力ファイルを持っていますか?

ありがとう

答えて

1

はい、sparkは、保存しようとすると出力を複数のファイルに書き込みます。計算が分散されているので、出力ファイルは(part-r-00000-f9ec958d-ceb2-4aee-bcb1-fa42a95b714f)のような複数の部分ファイルに書き込まれます。作成されるファイルの数は、パーティションの数と同じです。

データが小さく、メモリに収まる場合は、出力ファイルを1つのファイルに保存できます。しかし、データが1つのファイルに大量に保存されている場合は、推奨される方法ではありません。

実際には、test.jsonはディレクトリであり、jsonファイルではありません。内部に複数の部品ファイルが含まれています。これは後で簡単に読むことができますので、問題はありません。

出力を1つのファイルに残したい場合は、1に再分割して、すべてのデータを1つのノードに保存して保存する必要があります。大量のデータがある場合は、この問題が発生する可能性があります。

df.repartition(1).write.json("path/test.json") 

それとも

df.collect().write.json("path/test.json") 
関連する問題