私は巨大なJsonファイルを持っていますが、その一部は次のとおりです。
{
"socialNews": [{
"adminTagIds": "",
"fileIds": "",
"departmentTagIds": "",
........
........
"comments": [{
"commentId": "",
"newsId": "",
"entityId": "",
....
....
}]
}]
.....
}
次のように、socialNewsに側面ビューの爆発を適用しました。
val rdd = sqlContext.jsonFile("file:///home/ashish/test")
rdd.registerTempTable("social")
val result = sqlContext.sql("select * from social LATERAL VIEW explode(socialNews) social AS comment")
今、この結果(DataFrame)をjsonに変換してファイルに保存したいのですが、変換を行うためのscala apiを見つけることができません。これを行う標準ライブラリはありますか?またはそれを把握する方法はありますか?
_val result: DataFrame = sqlContext.read.json(path)
result.write.json("/yourPath")
_
メソッドwrite
はクラス DataFrameWriter にあり、DataFrame
オブジェクトでアクセスできる必要があります。 rddがDataFrame
型であり、非推奨のSchemaRdd
型ではないことを確認してください。型定義_val data: DataFrame
_を明示的に提供するか、toDF()
を使用してdataFrameにキャストできます。
DataFrameがある場合、jsonレコードを含むRDD [String]に変換するAPIがあります。
val df = Seq((2012, 8, "Batman", 9.8), (2012, 8, "Hero", 8.7), (2012, 7, "Robot", 5.5), (2011, 7, "Git", 2.0)).toDF("year", "month", "title", "rating")
df.toJSON.saveAsTextFile("/tmp/jsonRecords")
df.toJSON.take(2).foreach(println)
これはSpark 1.4以降で利用可能です。作成した結果のDataFrameでAPIを呼び出します。
利用可能なAPIがリストされています こちら
sqlContext.read().json(dataFrame.toJSON())
それでもDataframeをJSONに変換する方法がわからない場合は、to_jsonまたはtoJSON inbuilt Spark関数を使用できます。
サンプルのDataframeと変換するJSONのフォーマットがある場合はお知らせください。