【发布时间】:2018-11-08 23:06:39
【问题描述】:
我真的是 Apache Spark 的新手。
我正在通过 Spark 以分布式方式实现 Approximate LOCI(或 ALOCI),这是一种异常检测算法。该算法基于在 QuadTree 中存储点,该 QuadTree 用于查找点的邻居数。
我确切地知道四叉树是如何工作的。其实我最近用Java实现了这样一个结构。但我完全迷失了这种结构在 Spark 上以分布式方式工作的方式。
可以在 Geospark 中找到与我需要的类似的东西。
GeoSpark 在许多情况下使用 PointRDD 类,它扩展了 SpatialRDD 类,我可以看到它使用上面链接中的 QuadTree 来划分空间对象。至少理论上我是这样理解的。
在实践中,我仍然无法弄清楚这一点。例如,假设我在 csv 中有数百万条记录,我想在 QuadTree 中读取和加载它们。
我可以将 csv 读取到 RDD,但是然后呢?这个 RDD 如何在逻辑上连接到我正在尝试构建的 QuadTree?
当然,我不希望这里有一个可行的解决方案。我只需要这里的逻辑来填补我脑海中的空白。如何实现分布式 QuadTree 以及如何使用它?
【问题讨论】:
标签: scala apache-spark data-structures pyspark distributed