我已经看到我们可以使用带有pyspark的scikit-learn库来处理单个worker上的分区。
但是,如果我们想要处理分布式训练数据集并说回归算法应该与整个数据集有关,那该怎么办?由于scikit learn未与RDD集成,我认为它不允许在整个数据集上运行算法,而只允许在该特定分区上运行算法。如果我错了,请纠正我。
spark-sklearn解决这个问题有多好
答案 0 :(得分:0)
如文档中所述,spark-sklearn确实符合您的要求
- 并行训练和评估多个scikit-learn模型。它是默认包含的多核实现的分布式模拟 在scikit-learn。
- 将Spark的数据帧无缝转换为numpy ndarrays或稀疏矩阵。
所以,要专门回答你的问题:
但是,如果我们想要处理分布式训练数据集,该怎么办? 并说回归算法应该与整个数据集有关。 由于scikit learn未与RDD集成,我认为它不允许在该特定分区上的整个数据集上运行算法
在spark-sklearn中,spark被用作joblib库的替代,作为多线程框架。因此,从单个机器上的执行到多机器上的执行,都可以通过火花无缝地处理。换句话说,正如Auto scaling scikit-learn with spark文章中所述:
单机案例和集群案例之间的代码无需更改。