有一处不是不是很明白?
Iamshg opened this issue · 0 comments
Iamshg commented
您好,我在看 DBSCAN算法的Spark实现.ipynb 代码时候,有一处不是很明白,希望可以解答一下。
文中在第八步骤
/*================================================================================*/
// 八,求每一个簇的代表核心和簇元素数量
/*================================================================================*/
....
val rdd_result = rdd_cluster.reduceByKey((a,b)=>{
val id_set = a._3 | b._3 # 不明白
val result = if(a._2>=b._2) (a._1,a._2,id_set)
else (b._1,b._2,id_set)
result
})
...
在这里,rdd_cluster
进行了按照键的归并操作,但是rdd_cluster的已经是聚类的结果了,就说明rdd_cluster
的键都是唯一的,没有重复的,所以我认为这一步骤reduceByKey
是无用操作,是吗?
第二,如果我的第一的疑问有问题,那么成功运行了reduceByKey
的逻辑,但是在reduceByKey
的代码中,对相同类的邻居集合进行了并集|
操作,为什么邻居数量result._2
取的不是id_set
的长度,而是Max(a._2,b._2)
?