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

Posted

技术标签:

【中文标题】将字段附加到 JSON 数据集 Java-Spark【英文标题】:Append fields to JSON dataset 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"

那我该如何解决呢?

谢谢。

【问题讨论】:

How to add a constant column in a Spark DataFrame?的可能重复 【参考方案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

以上是关于将字段附加到 JSON 数据集 Java-Spark的主要内容,如果未能解决你的问题,请参考以下文章

将数据字段附加到保存到表中的记录

Swift JSON响应两个字段值附加到单个数组中

Apache PIG:将一个数据集附加到另一个数据集

如何将列表元素的 ID 值附加到带有 .json 的链接?

如何根据 Python 中的索引时间序列条件将新数据集附加到现有数据集

Weka 如何将类标签附加到测试数据集?