簡體   English   中英

使用 Apache Spark 比較兩個 Json 文件

[英]Compare two Json files using Apache Spark

我是 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)

我在執行此代碼時得到的 output 是:

+--------------------+
|employee            |
+--------------------+
|{true, sonoo, 58000}|
+--------------------+

但是這里只修改了一個字段,即薪水,因此 output 應該只是更新后的字段及其路徑。

以下是預期的 output 詳細信息:

[
  {
    "op" : "replace",
    "path" : "/employee/salary",
    "value" : 58000
  }
]

誰能指出我正確的方向?

假設每個 json 都有一個標識符,並且您有兩個 json 組(例如文件夾),您需要對兩組中的 json 進行黑白比較:

  1. 將每個組的 json 加載到 dataframe 中,提供與子結構匹配的架構。 在此之后,您有兩個數據框。
  2. 通過加入標識符來比較 jsons(現在數據框中的行),查找不匹配的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM