多核 python 作为 spark 的替代品
Multicore python as an alternative to spark
我有一个 python 程序,它使用大量 pandas
和 sklearn
计算。它基本上遍历数据框并进行微积分。
该代码使用 multiprocessing
模块的 map
函数。它还使用一些 sklearn
模型 n_jobs = -1
.
它需要 1 个 TERA RAM 和 100 个内核才能 运行。可悲的是,我可以在云提供商中推出的更大的机器更多是 16 核和 100Go Ram。
是否有一种简单的方法来使我的python脚本适应运行它在机器集群或类似的东西上以处理计算?
如果不需要,我不想在 Spark 中重写所有内容。
你可以看看Celery。
该项目专注于解决您的问题。
The execution units, called tasks, are executed concurrently on a
single or more worker servers...
派对有点晚了,但是对于偶然发现这个问题的人,你也可以尝试 Dask。
This page from the documentation 描述了它与 Spark 的比较,总结回答了问题:
Generally Dask is smaller and lighter weight than Spark. This means that it has fewer features and, instead, is used in conjunction with other libraries, particularly those in the numeric Python ecosystem. It couples with libraries like Pandas or Scikit-Learn to achieve high-level functionality.
我有一个 python 程序,它使用大量 pandas
和 sklearn
计算。它基本上遍历数据框并进行微积分。
该代码使用 multiprocessing
模块的 map
函数。它还使用一些 sklearn
模型 n_jobs = -1
.
它需要 1 个 TERA RAM 和 100 个内核才能 运行。可悲的是,我可以在云提供商中推出的更大的机器更多是 16 核和 100Go Ram。
是否有一种简单的方法来使我的python脚本适应运行它在机器集群或类似的东西上以处理计算?
如果不需要,我不想在 Spark 中重写所有内容。
你可以看看Celery。
该项目专注于解决您的问题。
The execution units, called tasks, are executed concurrently on a single or more worker servers...
派对有点晚了,但是对于偶然发现这个问题的人,你也可以尝试 Dask。
This page from the documentation 描述了它与 Spark 的比较,总结回答了问题:
Generally Dask is smaller and lighter weight than Spark. This means that it has fewer features and, instead, is used in conjunction with other libraries, particularly those in the numeric Python ecosystem. It couples with libraries like Pandas or Scikit-Learn to achieve high-level functionality.