【发布时间】:2021-07-08 11:10:34
【问题描述】:
我是 Apache Spark 的新手,我正在尝试比较两个 json 文件。 我的要求是找出添加、删除或修改哪个键/值以及它的路径。
为了解释我的问题,我在这里分享我用一个小的 json 示例尝试过的代码。
示例 Json 1 是:
{
“员工”:{
"名称": "sonoo",
“薪水”:57000,
“已婚”:是的
} }
示例 Json 2 是:
{
“员工”:{
"名称": "sonoo",
“工资”:58000,
“已婚”:是的
} }
我的代码是:
//Compare two multiline json files
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
//Load first json file
val jsonData_1 = sqlContext.read.json(sc.wholeTextFiles("D:\\File_1.json").values)
//Load second json file
val jsonData_2 = sqlContext.read.json(sc.wholeTextFiles("D:\\File_2.json").values)
//Compare both json files
jsonData_2.except(jsonData_1).show(false)
我在执行此代码时得到的输出是:
+--------------------+
|employee |
+--------------------+
|{true, sonoo, 58000}|
+--------------------+
但这里只修改了一个字段,即 salary,因此输出应该只是更新后的字段及其路径。
以下是预期的输出细节:
[
{
"op" : "replace",
"path" : "/employee/salary",
"value" : 58000
}
]
谁能指出我正确的方向?
【问题讨论】:
标签: json apache-spark compare difference