使用ApacheSpark比较两个Json文件



我是Apache Spark的新手,正在尝试比较两个json文件。我的要求是找出添加、删除或修改了哪个键/值,以及它的路径是什么。

为了解释我的问题,我在这里分享了我尝试过的一个小json示例的代码。

样本Json 1为:

{
"员工">

样本Json 2是:

{
"员工">

我的代码是:

//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都有一个标识符,并且您有两个json组(例如文件夹(,您需要比较两个组中的json:

  1. 将每个组的json加载到一个数据帧中,提供与son的结构匹配的模式。在此之后,您将获得两个数据帧
  2. 通过连接标识符来比较json(现在数据帧中的行(,查找不匹配的值

相关内容

  • 没有找到相关文章

最新更新