繁体   English   中英

DBSCAN集群python-在多个集群任务上并行运行

[英]DBSCAN clustering python - parallel run on multiple clustering tasks

我需要在大约1400万用户上运行DBSCAN集群,每个用户都有1k数据点。 每个用户都是不同的集群案例,与其他用户完全不同。 基本上,我有许多小型群集任务。

即使在使用python多处理模块并行执行任务的情况下,也无法在一台计算机上运行它,因为IO和群集需要很长时间。

我考虑过使用Spark来管理集群上的并行运行,但是我认为这可能不适合我的情况,因为DBSCAN不在MLlib中实现,而且我不需要并行运行每个集群任务,而是运行每个一个分开。 每当我尝试使用Spark本机RDD或数据帧之外的任何东西时,显然必须将所有数据收集到驱动程序节点。

我的问题是,比每个节点都选择一个用户子集的时候,在不同的节点上简单地运行许多独立的进程,有一个更聪明的解决方案。

谢谢

由于您的用户都是独立的,因此这显然是一个令人尴尬的并行问题。 您想运行同一任务(DBSCAN)数百万次。 有很多方法可以实现这一目标。 你也许可以使用火花(虽然我会考虑使用它是一个基于Java的工具,如ELKI -你可能需要确保你并行的用户,而不是每个用户 ),MapReduce的,甚至是Makefile中与锁定,如果您的网络文件系统具有锁定功能。 关键因素是数据的组织方式。 无论您是可以并行读取所有工作线程,还是将所有数据路由到主节点(错误),都将产生巨大的差异。 您需要将数据有效地提供给工作人员,并且需要存储聚类结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM