如何将嵌套的json文件转换为scala中的csv

时间:2016-09-22 07:32:21

标签: json scala csv apache-spark

我想将嵌套的json转换为csv,我使用

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

但它可以用于普通的json而不是嵌套的json。无论如何,我可以将我的嵌套json转换为csv?帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:1)

当您要求Spark将JSON结构转换为CSV时,Spark只能映射JSON的第一级。 这是因为CSV文件的简单性。它只是将一个值赋予名称。这就是为什么{"name1":"value1", "name2":"value2"...}可以用这种结构表示为CSV的原因: name1,name2, ... value1,value2,... 在您的情况下,您正在转换具有多个级别的JSON,因此Spark异常表示它无法弄清楚如何将这样复杂的结构转换为CSV。

如果您尝试仅向JSON添加第二级,它将起作用,但要小心。它将删除第二级的名称,仅包含数组中的值。

您可以查看this link以查看json数据集的示例。它包括一个例子。

由于我没有关于数据性质的信息,我无法对此进行更多说明。但是,如果您需要将信息写为CSV,则需要简化数据结构。

答案 1 :(得分:0)

在spark中阅读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