Spark机器学习--更好的设计

3
我正在尝试在Spark中实现机器学习算法。基本思路是将数据分成N个部分,分别在每个数据集分区上学习N个单独的模型。在预测期间,我们轮询这些N个模型并获取它们的输出,然后将它们组合起来。
a) 将数据分区为N个部分,我们使用repartition(N) b) 在每个分区上学习模型,我们使用mapPartitionsWithIndex 问题在于,多个分区映射到同一台物理机器上,导致在同一物理节点上启动多个模型构建(由mapPartitionsWithIndex调用),从而使该节点耗尽内存(我们已经达到了执行器内存的最大值)。
有更好的设计方式吗?

你是在不同的分区上学习相同的模型,还是在不同的分区上学习不同的模型? - mtoto
1个回答

0
考虑使用randomSplit()函数,该函数根据提供的权重将DataFrame随机分成一组DataFrames。
示例(Pyspark):
给定一个df DataFrame。
df = sc.parallelize([[1, 1], [2, 2], [3, 3], [4, 4]]).toDF(["a", "b"])

应用:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接