簡體   English   中英

在Spark中加入兩個RDD時,如何提取不匹配的值?

[英]How can I extract the values that don't match when joining two RDD's in Spark?

我有兩組RDD,如下所示:

rdd1 = [(12, abcd, lmno), (45, wxyz, rstw), (67, asdf, wert)]
rdd2 = [(12, abcd, lmno), (87, whsh, jnmk), (45, wxyz, rstw)]

我需要創建一個新的RDD,它具有在rdd2中找到的所有值,而在rdd2中沒有相應的匹配rdd1 因此,創建的RDD應該包含以下數據:

rdd3 = [(87, whsh, jnmk)]

有誰知道如何做到這一點?

您可以進行完全連接,然后創建2個新的RDD。

  1. 選擇兩個表都有記錄的位置
  2. 選擇存在RDD2 PK且RDD1為空的位置

您需要先將它們轉換為KV rdds。 下面的示例代碼:rdd3 = rdd1.fullJoin(rdd2).filter(x => x._3.exists).map(x =>(x._1,x._3.get))

(是的,有一種更慣用的方式來獲得選擇,但這應該可行)

暫無
暫無

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

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