如何使用foreachPartition在Spark中为每个分区有效地构建一个ML模型?

问题描述 投票:0回答:1

我正在尝试为数据集的每个分区都适合一个ML模型,但我不知道如何在Spark中进行。

我的数据集基本上看起来像这样,并且按公司划分]:

Company | Features | Target

A         xxx        0.9
A         xxx        0.8
A         xxx        1.0
B         xxx        1.2
B         xxx        1.0
B         xxx        0.9
C         xxx        0.7
C         xxx        0.9
C         xxx        0.9

我的目标是以并行的方式为每家公司训练一个回归器(我有几亿条记录,有10万家公司)。我的直觉是,我需要使用foreachPartition来并行处理分区(即我的公司),并训练和保存每个公司模型。 我的主要问题是关于如何处理在iterator调用的函数中使用的foreachPartition类型。

这里是什么样子:

dd.foreachPartition(

    iterator => {var company_df = operator.toDF()
                 var rg = RandomForestRegressor()
                                 .setLabelCol("target")
                                 .setFeaturesCol("features")
                                 .setNumTrees(10)
                 var model = rg.fit(company_df)
                 model.write.save(company_path)
                 }
)

据我所知,由于[DD]的概念本身不能存在于iterator语句中,因此无法将dataframe转换为foreachPartition

我知道这个问题很悬而未决,但是我真的很困惑。

我正在尝试为我的数据集的每个分区拟合一个ML模型,但我不知道如何在Spark中进行操作。我的数据集基本上看起来像这样,并按公司划分:功能...

scala apache-spark apache-spark-ml
1个回答
0
投票

在pyspark中,您可以执行以下操作

© www.soinside.com 2019 - 2024. All rights reserved.