2016-07-04 25 views
2

我在探索pyspark以及将scikit-learn与pyspark集成的可能性。我想用scikit-learn在每个分区上训练一个模型。这意味着,当我的RDD被定义并且分布在不同的工作节点之间时,我想在每个工作节点上存在的每个分区上使用scikit-learn并训练一个模型(比方说一个简单的k-means)。由于scikit学习算法需要熊猫数据框,我最初的想法是为每个分区调用toPandas,然后训练我的模型。但是,toPandas函数将DataFrame收集到驱动程序中,这不是我正在寻找的。有没有其他方法可以实现这样的目标?将scikit-learn与pyspark集成

+0

如果我能以某种方式将每个分区转换为一个数据框到一个类似数组的结构中,那么这是可能的,对吧? –

+1

我看不出在每个分区上计算模型有什么相关性。甚至意味着什么?在实践中,你如何组装模型? – eliasah

+0

所以我们假设如果我在每个分区上运行kmeans,那么我应该将所有质心点传输给驱动程序。这就像一个近似的k-means。但是,我现在不知道如何将质心点传送给驾驶员。任何想法? –

回答

3

scikit-learn目前无法与spark完全集成,原因是scikit-learn算法没有实现,因为它只能在一台机器上运行。不过,您可以在spark-sklearn中找到准备使用Spark-Scikit集成工具,该工具支持在Spark上执行GridSearch进行交叉验证(现在时刻)。

+0

如果我想执行任意模型,该怎么办?比方说,在每个分区上运行一个kmeans。这是支持spark-sklearn? –

+0

这个库只支持我上次检查过的分布式网格搜索。现在看起来情况仍然如此。不幸的是,分发算法不仅仅是即插即用,或者它会非常简单。除非sklearn直接在火花上实现这些算法,否则将不可能整合这种简单。 – eliasah