【问题标题】:Saving Spark ML pipeline to a database将 Spark ML 管道保存到数据库
【发布时间】:2017-11-23 23:42:23
【问题描述】:

是否可以将 Spark ML 管道保存到数据库(例如 Cassandra)?从文档中我只能看到保存到路径选项:

myMLWritable.save(toPath);

有没有办法以某种方式包装或更改myMLWritable.write() MLWriter 实例并将输出重定向到数据库?

【问题讨论】:

    标签: apache-spark cassandra apache-spark-ml


    【解决方案1】:

    目前不可能(或至少不支持)。 ML writer 不是extendable 并且依赖于Parquet 文件和目录结构来表示models

    从技术上讲,您可以提取单个组件并使用内部私有 API 从头开始​​重新创建 models,但这可能是唯一的选择。

    【讨论】:

      【解决方案2】:

      Spark 2.0.0+

      乍一看,所有TransformersEstimators 都实现了MLWritable。如果您使用 Spark

      火花 >= 1.6

      从 Spark 1.6 开始,可以使用 save 方法保存模型。因为几乎每个模型都实现了MLWritable 接口。例如LogisticRegressionModel,拥有它,因此可以使用它将您的模型保存到所需的路径。

      火花

      DataFrames 上的某些操作可以进行优化,与普通的RDDs 相比,它可以转化为更高的性能。 DataFramesprovide 高效缓存和 SQLish API 可以说比 RDD API 更容易理解。

      ML Pipelinesare extremely useful and tools like cross-validator or differentevaluators 是任何机器流水线中必不可少的,即使上述任何一项都不是特别难在低级 MLlib API 之上实现,最好准备好使用,通用和相对良好的测试解决方案。

      我相信,最终使用ML 而非MLLib 所获得的是相当优雅的高级API。您可以做的一件事是将两者结合起来创建一个自定义的多步骤管道:

      • 使用 ML 加载、清理和转换数据,
      • 提取所需数据(参见例如 [extractLabeledPoints ]4 方法)并传递给 MLLib 算法,
      • 添加自定义交叉验证/评估
      • 使用您选择的方法(Spark 模型或PMML)保存 MLLib 模型

      Jira 中也提供了临时解决方案。 Temporary Solution

      【讨论】:

      • 不,我认为这不会允许。因为在那里您还需要将模型保存到分布式文件系统。我认为它不适用于 Cassandra 本身!我已经保存了类似的问题。我们解决问题的方法是,我们将元数据保存在 Cassandra 中,即 URL,然后将模型保存在 HDFS 本​​身中!希望对你有帮助!
      猜你喜欢
      • 2016-05-23
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-14
      • 2016-10-17
      • 2016-01-29
      • 1970-01-01
      相关资源
      最近更新 更多