私はマルチラインのjsonファイルを持っていますが、jsonを読むためにsparkのread.jsonを使用していますが、問題はそのjsonファイルの最初のオブジェクトを読み取るだけですread.jsonはSparkの最初のオブジェクトを読み取るだけです
val dataFrame = spark.read.option("multiLine", true).option("mode", "PERMISSIVE").json(path)
dataFrame.rdd.saveAsTextFile("DataFrame")
サンプルJSON:
{
"_id" : "589895e123c572923e69f5e7",
"thing" : "54eb45beb5f1e061454c5bf4",
"timeline" : [
{
"reason" : "TRIP_START",
"timestamp" : "2017-02-06T17:20:18.007+02:00",
"type" : "TRIP_EVENT",
"location" : [
11.1174091,
69.1174091
],
"endLocation" : [],
"startLocation" : []
},
"reason" : "TRIP_END",
"timestamp" : "2017-02-06T17:25:26.026+02:00",
"type" : "TRIP_EVENT",
"location" : [
11.5691428,
48.1122443
],
"endLocation" : [],
"startLocation" : []
}
],
"__v" : 0
}
{
"_id" : "589895e123c572923e69f5e8",
"thing" : "54eb45beb5f1e032241c5bf4",
"timeline" : [
{
"reason" : "TRIP_START",
"timestamp" : "2017-02-06T17:20:18.007+02:00",
"type" : "TRIP_EVENT",
"location" : [
11.1174091,
50.1174091
],
"endLocation" : [],
"startLocation" : []
},
"reason" : "TRIP_END",
"timestamp" : "2017-02-06T17:25:26.026+02:00",
"type" : "TRIP_EVENT",
"location" : [
51.1174091,
69.1174091
],
"endLocation" : [],
"startLocation" : []
}
],
"__v" : 0
}
私はID = 589895e123c572923e69f5e7
を持つ唯一の最初のエントリを取得します。
私が間違っていることはありますか?
@ataそのような複数のオブジェクトを使用する場合、最上位オブジェクトはすべてのオブジェクトをラップする配列である必要があります –
{ []も働かなかった。他の解決策? – atalpha
すべてのオブジェクトにキーが必要なので、 '{}'を置くだけで動作しません。同様に、 '[]'はその配列内のすべてのオブジェクトがコンマで区切られている場合にのみ機能します。言い換えれば、ファイル全体が有効なJSONオブジェクトである必要があります* –