2016-09-22 159 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,则需要简化数据结构。