【问题标题】:spark machine learning -- better design激发机器学习——更好的设计
【发布时间】:2018-07-11 19:00:39
【问题描述】:

我正在尝试在 Spark 中实现机器学习算法。基本思想是将数据拆分为 N 个分区,并在每个单独的数据集分区上分别学习 N 个单独的模型。在预测期间,我们轮询这 N 个模型并获取它们的 o/p 并将它们组合起来。

a) 将数据分成 N 个部分,我们使用 repartition(N) b) 在我们使用的每个分区上学习模型mapPartitionsWithIndex

问题是多个分区映射到同一台物理机——它在同一物理节点上启动多个模型构建(由mapPartitionsWithIndex 调用)——导致节点耗尽内存(我们已最大化执行程序记忆)。

有没有更好的设计方法?

【问题讨论】:

  • 你是在不同的分区上学习相同的模型,还是在不同的分区上学习不同的模型?

标签: python apache-spark machine-learning


【解决方案1】:

考虑使用 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-29
    • 2023-01-03
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 2010-09-11
    相关资源
    最近更新 更多