JSONファイルを小さなDBとして使用しようとしていました。 DataFrameでテンプレートテーブルを作成した後、SQLでクエリを実行して例外が発生しました。ここに私のコードは次のとおりです。Apache Sparkで複数JSONを読む
val df = sqlCtx.read.json("/path/to/user.json")
df.registerTempTable("user_tt")
val info = sqlCtx.sql("SELECT name FROM user_tt")
info.show()
df.printSchema()
結果:
root
|-- _corrupt_record: string (nullable = true)
マイJSONファイル:
{
"id": 1,
"name": "Morty",
"age": 21
}
がExeption:私はそれを修正するにはどうすればよい
Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve 'name' given input columns: [_corrupt_record];
? UPD
_corrupt_record
はそれは奇妙だ
+--------------------+
| _corrupt_record|
+--------------------+
| {|
| "id": 1,|
| "name": "Morty",|
| "age": 21|
| }|
+--------------------+
UPD2
ですが、私はそれをoneliner作るために私のJSONを書き換える際に、すべてが正常に動作します。
{"id": 1, "name": "Morty", "age": 21}
したがって、問題はnewline
です。 JSONファイルとして提供されるファイルは、典型的なJSONファイルではないことを
注:
UPD3
私は、ドキュメントに次の文を見つけました。各行には、独立した有効なJSONオブジェクトが含まれている必要があります。その結果、通常複数行のJSONファイルが失敗することがよくあります。
このような形式でJSONを保存すると便利ではありません。 JSONのマルチライン構造を取り除く、またはonelinerで変換するための回避策はありますか?
"マルチライン"オプションが私のために働いていました。ありがとうダン! – Omkar