2015-04-06 129 views
2

我有一個尺寸80'000的pairRDD。只有1.5%的條目是唯一的。爲了篩選出複製的數據我稱之爲distinct方法:Apache Spark RDD不同 - 奇怪的行爲

val newRDD = oldRDD.distinct 

然而,這不僅能消除大部分的重複數據 - 它留下3-5之間重複每個唯一的入口!

我檢查了剩餘的條目與原始條目,它們完全一樣。

Sample of the original data: 

(1,(0.0500937328554143, 0.9000767961093774)) 
(1,(0.0500937328554143, 0.9000767961093774)) 
(1,(0.0500937328554143, 0.9000767961093774)) 

Sample of the distinct data: 

(1,(0.0500937328554143, 0.9000767961093774)) 
(1,(0.0500937328554143, 0.9000767961093774)) 
(1,(0.0500937328554143, 0.9000767961093774)) 

有什麼,我想知道如何distinct工作?

回答

1

這些數字在轉換爲字符串後比較相等,但根據distinct如何處理它們,它們在轉換之前不得等於相等。不要打印它們,請檢查比較結果(==)。

+0

至少這是我的猜測。如果他們確實比較相等,則必須有一個微妙的解釋。 –

+0

謝謝你的回覆,丹尼爾。我想知道爲什麼會發生這種情況,爲什麼在135個參賽作品中,它決定了3個與其他作品不同,並且彼此之間(我對他們又做了「獨特」處理,而且都保留在RDD中)。這也很奇怪,因爲我把1個條目放入地圖中,然後複製它。然後我把它們拿出來,他們已經改變了。奇怪的行爲。 – monster

+0

你發現了什麼?它們與'=='相等嗎?這確實是一個奇怪的行爲。即使通過所有的序列化和傳輸,我也不會期望相同的數字變得不相等。 –