嗨
我是pyspark的新手,我打算用https://github.com/mraad/dbscan-spark中解释的MAP_REDUCE技术实现DBSCAN,但我不明白, 很明显,如果我们有多台计算机,那么我们将每个单元分配给MAP,并且如链接中所解释的,在调用REDUCE之后,我们找出每个epsilon邻居的内容,但在单个计算机中我们如何运行并将MAP分配给单元。 我们如何在单个计算机(pyspark)中定义多个地图并将它们分配给单元格呢?
我根据单元格的epsilon邻居写了fishnet(cell,eps)
返回点位置。
我想将它传递给每个MAP,但我不知道如何在pyspark中执行此操作
类似的东西(如果我们有4个单元格):
map1(fishnet)
map2(fishnet)
map3(fishnet)
map4(fishnet)
我会考虑任何解决方案
答案 0 :(得分:0)
Spark / MapReduce的工作是将映射器分发给不同的工作人员。不要搞乱那部分,让Spark决定在哪里调用实际的映射器。
请注意Spark不太适合群集。它的集群功能非常有限,而且性能非常糟糕。参见例如:
Neukirchen,赫尔穆特。 “大数据与高性能计算的表现:一些观察。”
它需要900个内核和Spark才能胜过像ELKI这样的优秀单核应用程序!而其他Spark DBSCAN实现要么不能可靠地工作(即失败),要么产生错误的结果。