2016-11-23 41 views
3

我想在Spark中实现机器学习算法。基本思想是将数据拆分为N个分区,并分别在每个单独的数据集分区上学习N个单独的模型。在预测过程中,我们会对这些N个模型进行轮询并获得它们的o/火花机学习 - 更好的设计

一个)分区数据分成N部分,我们使用重新分配(N) b)至学习每个我们使用mapPartitionsWithIndex

问题分区模型是多个分区映射到相同的物理机器 - 其发射多个模型建立在相同的物理节点上(由mapPartitionsWithIndex调用) - 导致节点耗尽内存(我们已经最大化执行程序内存)。

有没有更好的方法来设计这个?

+0

你学习在不同的分区,或在不同的分区不同的型号相同的型号? – mtoto

回答

0

考虑使用randomSplit()函数,该函数根据提供的权重将DataFrame随机分为一组DataFrame。

例(Pyspark):

给予DF数据帧

df = sc.parallelize([[1, 1], [2, 2], [3, 3], [4, 4]]).toDF(["a", "b"]) 

适用于:

splittedDF = df.randomSplit([0.5, 0.5], 1234)