我正在尝试为数据集的每个分区都适合一个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中进行操作。我的数据集基本上看起来像这样,并按公司划分:功能...
在pyspark中,您可以执行以下操作