【问题标题】:how to convert nested json file into csv in scala如何在scala中将嵌套的json文件转换为csv
【发布时间】:2017-01-30 16:04:29
【问题描述】:

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

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

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

【问题讨论】:

  • 当您尝试运行您的程序时,您能否在日志中看到“UnsupportedOperationException: CSV data source does not support struct...”?
  • 是的,我收到错误“CSV 数据源不支持结构...”@CarlosVilchez

标签: json scala csv apache-spark


【解决方案1】:

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

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

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

由于我没有关于数据性质的信息,所以我不能多说。但如果您需要将信息写入 CSV,则需要简化数据结构。

【讨论】:

    【解决方案2】:

    在 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

    【讨论】:

    猜你喜欢
    • 2022-09-30
    • 2017-05-02
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2021-10-21
    • 1970-01-01
    相关资源
    最近更新 更多