我試圖將JSON文件用作小型數據庫。在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
這很奇怪,但是當我重寫我的JSON,使其oneliner,一切工作正常。
{"id": 1, "name": "Morty", "age": 21}
所以問題出在newline
。
UPD3
我在文檔中發現的下一句話:
請注意,是提供一個JSON文件的文件是不是一個典型的JSON文件。每行必須包含一個單獨的,獨立的有效JSON對象。因此,常規的多行JSON文件通常會失敗。
以這種格式保存JSON是不方便的。是否有任何解決方法來擺脫JSON的多線結構或將其轉換爲oneliner?
「multiline」選項爲我工作。謝謝丹! – Omkar