将字段附加到JSON数据集Java-Spark

问题描述 投票:-1回答:1

我正在使用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个回答
0
投票

一个选项可以是,您可以将文件作为文本文件读取,在map操作中,您可以使用创建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()
© www.soinside.com 2019 - 2024. All rights reserved.