Scala Apache Spark RDD独特-奇怪的行为

Scala Apache Spark RDD独特-奇怪的行为,scala,apache-spark,rdd,Scala,Apache Spark,Rdd,我有一个80'000大小的pairRDD。只有1.5%的条目是唯一的。要过滤出复制的数据,我调用distinct方法: val newRDD = oldRDD.distinct 但是,这只会删除大部分重复数据-它会为每个唯一条目保留3-5个重复 我检查了剩余条目和原始条目,它们完全相同 Sample of the original data: (1,(0.0500937328554143, 0.9000767961093774)) (1,(0.0500937328554143, 0.9000

我有一个80'000大小的
pairRDD
。只有1.5%的条目是唯一的。要过滤出复制的数据,我调用
distinct
方法:

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
是如何工作的,我有什么遗漏吗?

这些数字在转换为字符串后比较相等,但根据
distinct
对它们的处理方式,它们在转换之前不能比较相等。与其打印它们,不如检查比较结果(
==
)。

至少我是这么想的。如果他们真的比较相等,那就必须有一个更微妙的解释。谢谢你的回答,丹尼尔。我想知道为什么会发生这种情况,以及为什么在135个条目中,它确定3个条目与其他条目不同,并且彼此不同(我再次对它们进行了
distinct
,它们都保留在RDD中)。这也很奇怪,因为我在地图上放了一个条目,然后复制它。然后我把它们拿出来,它们就变了。奇怪的行为,你发现了什么?它们是否与
==
相等?这真是一种奇怪的行为。即使通过所有的序列化和传输,我也不会期望相等的数字变成不相等的。