我正在探索pyspark以及将scikit-learn与pyspark整合的可能性。我想使用scikit-learn在每个分区上训练模型。这意味着,当我的RDD被定义并在不同的工作节点之间分配时,我想在每个存在的分区上使用scikit-learn并训练一个模型(让我们说一个简单的k-means)在每个工作节点上。由于scikit-learn算法采用了Pandas数据帧,我最初的想法是为每个分区调用toPandas
,然后训练我的模型。但是,toPandas
函数将DataFrame收集到驱动程序中,这不是我正在寻找的东西。有没有其他方法可以实现这样的目标?
答案 0 :(得分:4)
scikit-learn目前还不能与spark完全集成,原因是scikit-learn算法没有实现分发,因为它只能在一台机器上运行。
然而,您可以在spark-sklearn中找到准备使用Spark-Scikit集成工具,该工具支持(暂时)在Spark上执行GridSearch以进行交叉验证。
答案 1 :(得分:1)
不,scikit learning不能与pyspark一起使用,原因是scikit learning是一个可以在单个计算机上运行的软件包,而spark是一个分布式环境。