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

时间:2018-09-04 10:01:16

标签: apache-spark apache-spark-dataset

我正在使用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"
}

那我该如何解决呢?

谢谢。

1 个答案:

答案 0 :(得分: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()