2017-08-08 90 views
0

Spark RDD包含兩個字段F1和F2,並通過運行SQL查詢來填充。檢查RDD中的字段是否包含唯一值

F1必須是唯一的,而F2沒有這個約束。實際上,F2和F1之間有一對多的關係。一個F2值可以與幾個F1值相關聯,但不是相反的方式。

使用Scala,什麼是最簡單的函數式編程結構,用於對RDD進行檢查,以確保從SQL返回的數據不違反此約束。

感謝

+0

行我希望你的RDD很小:D'rdd.groupBy(_._ 1).count == rdd.count' – philantrovert

回答

2

如果這是從SQL查詢比這個人口一定是一個數據幀,比你可以簡單地通過使用

df.select("order").distinct().count() == df.count() 

如果你已經轉換到RDD比你可以直接使用驗證此在@pphilantrovert建議

df.groupBy(_._1).count == df.count 

注:這是一個昂貴的任務,如果數據集較大

希望這有助於!

+0

謝謝。使用DataFrame時,如何找到不唯一的特定條目? – user1052610

+0

您可以按順序分組,然後對訂單進行計數,然後篩選出計數是否小於2,剩下的得分不是唯一的。 –

1

如果您打算使用RDD(不是DataFrames),那麼使用下面的代碼片段可以方便您使用。比方說,你RDD是inputRDD有2場第一個將被用作關鍵第二的值:

inputRDD.countByKey.filter(_._2 > 1) 

在沒有重複的情況下,它應該返回空Map()否則地圖包括重複鍵(第一場)

相關問題