2016-05-12 5 views
1

私は有効なJSON JSONファイルに書き込みたいことからデータフレームがあります。ScalaでsparkでJSON Dataframeを事前印刷するにはどうすればよいですか?

私の現在のコードは次のようになります。

val df: DataFrame = myFun(...) 
df.toJSON.saveAsTextFile("myFile.json") 

出力の形式は次のとおりです。

{}{}{} 

ファイルのコンテンツを有効なJSONとして整理する方法を教えてください:

[{},{},{}] 
+0

まだ見ています。 'toJSON'と' write.json( '両方とも、各行に完全なjsonオブジェクトを置くことができるので、有効なjsonファイルの代わりに個々のjsonオブジェクトの改行で区切られたファイル、つまりオブジェクトの配列になります。 – navicore

答えて

0

私の回避策を使用してスプレーJSON:

def apply(df: DataFrame): Option[String] = { 
    val collectedData = df.toJSON.coalesce(1).collect().mkString("\n") 
    val json = "[" + ("}\n".r replaceAllIn (collectedData, "},\n")) + "]" 
    val pretty = json.parseJson.prettyPrint 
    Some(s"$pretty\n") 
} 

醜いと非効率的な私は、単一の適切なJSONファイルを望んでいないと思われる場合には、ビッグデータの巨大ではありません私は最終的な結果を提供したいんとにかく

+0

' parseJson 'は文字列のメンバーではありません、フレームワークを使用していますか? –

+1

@GauravShah、はい、スプレーJSONライブラリ – navicore

0

は、私はあなたがScalaとの代替を見つけると確信しています。この(パイソン)

import json 
from bson import json_util 
from bson.json_util import dumps 
with open('myJson.json', 'w') as outfile: 
     json.dump(myDF, outfile) 

を使用しています。

関連する問題