【发布时间】:2017-11-23 23:42:23
【问题描述】:
是否可以将 Spark ML 管道保存到数据库(例如 Cassandra)?从文档中我只能看到保存到路径选项:
myMLWritable.save(toPath);
有没有办法以某种方式包装或更改myMLWritable.write() MLWriter 实例并将输出重定向到数据库?
【问题讨论】:
标签: apache-spark cassandra apache-spark-ml
是否可以将 Spark ML 管道保存到数据库(例如 Cassandra)?从文档中我只能看到保存到路径选项:
myMLWritable.save(toPath);
有没有办法以某种方式包装或更改myMLWritable.write() MLWriter 实例并将输出重定向到数据库?
【问题讨论】:
标签: apache-spark cassandra apache-spark-ml
目前不可能(或至少不支持)。 ML writer 不是extendable 并且依赖于Parquet 文件和目录结构来表示models。
从技术上讲,您可以提取单个组件并使用内部私有 API 从头开始重新创建 models,但这可能是唯一的选择。
【讨论】:
Spark 2.0.0+
乍一看,所有Transformers 和Estimators 都实现了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。您可以做的一件事是将两者结合起来创建一个自定义的多步骤管道:
在Jira 中也提供了临时解决方案。 Temporary Solution
【讨论】: