基于Spark的分布式DBSCAN实现:GraphX局部DBSCAN步骤咨询
基于Spark+GraphX实现DBSCAN的进展分享
我最近在Spark上尝试落地DBSCAN算法,参考的是《A Parallel DBSCAN Algorithm Based on Spark》这篇论文。这篇论文里的算法核心分为四个步骤:
- 数据分区
- 局部DBSCAN计算
- 数据分区合并
- 全局聚类
目前我正聚焦在局部DBSCAN计算这一步,用GraphX来实现。这里先给大家贴下我梳理的伪代码逻辑:
// 局部DBSCAN核心点/噪声点标记逻辑 从当前分区中选取任意点p 计算p的ε邻域Nₑ(p) 如果邻域内点的数量 |Nₑ(p)| ≥ minPts: 将p标记为核心点 否则: 将p标记为噪声点
现在我还在摸索如何把邻域计算逻辑适配到GraphX的图结构操作上——毕竟GraphX更擅长处理图顶点与边的关系,直接用RDD做邻域扫描效率不够理想,想借助GraphX的分布式图计算能力来优化这部分的性能。
内容的提问来源于stack exchange,提问作者fingerprints
相关产品推荐
相关产品推荐

