【问题标题】:Append fields to JSON dataset Java-Spark将字段附加到 JSON 数据集 Java-Spark
【发布时间】:2018-09-04 10:01:16
【问题描述】:

我正在使用 Java-Spark 将 JSON 加载到 Dataset 中,如下所示:

 Dataset<Row> df = spark.read().json(jsonFile);

假设我的 JSON 看起来像:

{
    "field1":
    {
        "key1":"value1"
    }
 }

现在我想添加一个新字段以使我的 JSON 看起来像:

{
    "field1":
    {
        "key1":"value1",
        "key2":"value2"
    }
 }

所以我所做的是:

df = df.withColumn("field1.key2", function.lit("value2"));

但我的 JSON 看起来像:

{
    "field1":
    {
        "key1":"value1"
    },
     "field1.key2":"value2"
}

那我该如何解决呢?

谢谢。

【问题讨论】:

标签: apache-spark apache-spark-dataset


【解决方案1】:

一个选项可以是,您可以将文件作为文本文件读取,在映射操作中,您可以使用创建 json 对象并对记录进行必要的修改,如下所示:

import org.json.JSONObject

val input = sparkSession.sparkContent.textFile("<input_file_path>")

val resultRDD = input.map(row => {

    val json = new JSONObject(row)
    json.getJSONObject("field1").put("key2", "value2")

    json.toString
})

val resultDF = sparkSession.read.json(resultRDD)
resultDF.printSchema()

【讨论】:

  • 我可以使用 Spark 数据集吗?
  • 我暂时没有解决方案,要以 Spark 数据集的方式实现这一点,有一个相同的公开票,以防你想check
猜你喜欢
  • 2021-09-20
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
  • 2012-10-05
  • 2017-09-22
  • 1970-01-01
  • 2020-01-18
  • 2019-02-12
相关资源
最近更新 更多