[英]Processing JSON in spark - different schemas in different files
我有很多從第三方獲得的JSON文件。 它們都具有相同的架構,除了當嵌套元素為空時,它表示為空數組。
第一個例子
{
....
"survey_data":
{
"2": { "question":"....", "answer_id":"....", .... },
"3": { "question":"....", "answer_id":"....", .... },
}
}
因此,這是一個有效的JSON,“ survey_data”元素是struct_type,但是具有非常復雜的嵌套結構(與此簡化示例相比,其子元素更多)
但是,當survey_data沒有嵌套元素時,它將表示為空數組:
{
....
"survey_data": []
}
這顯然在原理上是不兼容的,但由於數據來自第三方,因此我不能影響這一點。
當我想將這些JSON文件作為單個數據幀加載到spark中時,spark會推斷Survey_data類型為字符串,並轉義所有字符:
"survey_data":"{\"2\":{\"question\": ...
顯然這對我不利,我看到了兩種解決方法:
有人能向我提出解決此問題的方法嗎?
我認為這應該工作,很久以前就做到了。
如果您有一個滿意的帶有模式的JSON文件,最好是一個很小的文件,則可以使用其模式讀取所有其他JSON文件:
val jsonWithSchema = spark.read.json("PATH_TO_JSON_WITH_RIGHT_SCHEMA")
val df = spark.read.schema(jsonWithSchema.schema).json("PATH_TO_DATAFILES")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.