Apache Spark 2.0 模型持久性
Posted
技术标签:
【中文标题】Apache Spark 2.0 模型持久性【英文标题】:Apache Spark 2.0 Model Persistence 【发布时间】:2016-06-02 08:00:35 【问题描述】:根据这个帖子:https://databricks.com/blog/2016/05/31/apache-spark-2-0-preview-machine-learning-model-persistence.html Spark 2.0 包含独立于语言的模型序列化。
这是否支持使用 spark 训练模型并以非 jvm 语言为模型提供服务的用例(如在 pyspark 中使用的没有 jvm 后端的 python)?
【问题讨论】:
【参考方案1】:这取决于型号。他们说它是语言独立的(而不是 Spark 独立的),但有一些事情需要考虑:
-
如果模型相当大(例如 ALS),使用非分布式程序加载它会遇到很多问题。
您应该自己实现在非 Spark 程序中加载模型的逻辑(他们说他们为元数据存储 JSON 和为数据存储 Parquet 文件,因此您必须阅读它们)。
所以,只要您仍然使用 Spark,您实际上可以使用 Python 编写的程序保存模型,然后在 scala 或 Java 中加载并使用它,反之亦然。但如果您想在非 Spark 应用程序中使用该模型,则必须编写一些代码,甚至可能不可行(参见 ALS 示例)...
【讨论】:
【参考方案2】:在非 spark 环境中部署 spark mllib 模型和模型管道可以通过使用第三方库(如 MLeap)来解决。
MLeap 将您的代码打包成可以使用 MLeap 模型导入在 spark 之外部署的二进制文件。它与 MLeap 具有良好的向后兼容性,因此当您更新 spark 和 MLeap 版本时,以前版本的 MLeap 仍将继续工作,截至目前,spark 不保证在主要版本中这一点。
【讨论】:
以上是关于Apache Spark 2.0 模型持久性的主要内容,如果未能解决你的问题,请参考以下文章