【发布时间】:2021-04-09 21:23:40
【问题描述】:
假设我有 3 个简单的 SparkML 模型,它们将使用相同的 DataFrame 作为输入,但彼此完全独立(在运行序列和正在使用的数据列中)。
我想到的第一件事是,只需在阶段数组中创建一个包含 3 个模型的管道数组,然后运行总体拟合/变换以获得完整的预测等。
但是,我的理解是,因为我们将这些模型作为一个序列堆叠在一个管道中,Spark 不一定会并行运行这些模型,即使它们完全相互独立。
话虽如此,有没有办法并行拟合/转换 3 个独立模型?我想到的第一件事是创建一个创建管道的函数/对象,然后运行一个 map 或 parmap,我将在 map 函数中运行 3 个模型,但我不知道这是否会利用并行度。
这些也不是真正的交叉验证类型模型;我想要的工作流程是:
- 准备我的数据框
- 数据框将有 10 列 0-1 列
- 我将运行总共 10 个模型,其中每个模型将采用 10 列之一,如果该列 val == 1 则过滤数据,然后进行拟合/转换。
因此,独立性来自于这些单独的模型没有被链接并且可以按原样运行的事实。
谢谢!
【问题讨论】:
标签: scala apache-spark apache-spark-mllib apache-spark-ml