我正在使用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"
}
那我该如何解决呢?
谢谢。
答案 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()