我正在使用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"
}
那么我该如何解决呢?
谢谢。
一个选项可以是,您可以将文件作为文本文件读取,在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()