2016-09-22 69 views
0

我想我的嵌套JSON轉換成CSV,我用如何嵌套的JSON文件轉換成CSV斯卡拉

df.write.format("com.databricks.spark.csv").option("header", "true").save("mydata.csv") 

但它可以使用正常的JSON但不是嵌套的JSON。無論如何,我可以將我的嵌套json轉換爲csv?help將不勝感激,謝謝!

+0

當您嘗試運行程序時,是否可以在日誌中看到「UnsupportedOperationException:CSV數據源不支持struct ...」? –

+0

是的,我得到錯誤「CSV數據源不支持結構...」@CarlosVilchez – fin

回答

0

閱讀json火花文件並創建dataframe

val path = "examples/src/main/resources/people.json" 
val people = sqlContext.read.json(path) 

保存使用數據框spark-csv

people.write 
    .format("com.databricks.spark.csv") 
    .option("header", "true") 
    .save("newcars.csv") 

來源:

read json

save to csv

0

當您要求Spark將JSON結構轉換爲CSV時,Spark只能映射JSON的第一層。 發生這種情況是因爲CSV文件的簡單性。這僅僅是一個名字的價值。這就是爲什麼{"name1":"value1", "name2":"value2"...}可以用這種結構表示爲CSV: name1,name2, ... value1,value2,... 在你的情況,你正在轉換一個JSON幾個級別,所以Spark異常是說它無法弄清楚如何將這樣一個複雜的結構轉換成CSV 。

如果您嘗試向JSON添加第二級別,它將起作用,但要小心。它將刪除第二級的名稱以僅包含數組中的值。

你可以看看this link來查看json數據集的例子。它包括一個例子。

由於我沒有關於數據性質的信息,所以我不能多說這些。但是,如果您需要將信息編寫爲CSV,則需要簡化數據結構。