无法在 mleap 中序列化 apache spark 变压器

Posted

技术标签:

【中文标题】无法在 mleap 中序列化 apache spark 变压器【英文标题】:Unable to serialize a apache spark transformer in mleap 【发布时间】:2017-05-22 13:05:01 【问题描述】:

我使用 Spark 2.1.0 和 Scala 2.11.8。

我正在尝试在 apache spark 中构建一个 twitter 情绪分析模型,并使用 MLeap 为其提供服务。

当我在不使用 mleap 的情况下运行模型时,一切都很顺利。 仅当我尝试以 mleap 的序列化格式保存模型时才会出现问题,以便以后可以使用 mleap 为模型提供服务。

这是引发错误的行 -

val modelSavePath = "/tmp/sampleapp/model-mleap/" 

val pipelineConfig = json.get("PipelineConfig").get.asInstanceOf[Map[String, Any]]
val loaderConfig = json.get("LoaderConfig").get.asInstanceOf[Map[String, Any]]
val loaderPath = loaderConfig
    .get("DataLocation")
    .get
    .asInstanceOf[String]
var data = sqlContext.read.format("com.databricks.spark.csv").
                 option("header", "true").
                 option("delimiter", "\t").
                 option("inferSchema", "true").
                 load(loaderPath)

val pipeline = Pipeline(pipelineConfig)

val model = pipeline.fit(data)
val mleapPipeline: Transformer = model

我在最后一行得到 java.util.NoSuchElementException: key not found: org.apache.spark.ml.feature.Tokenizer。

当我快速搜索时,我发现 mleap 并不支持所有的转换器。但我找不到详尽的清单。

如何确定我正在使用的转换器是否实际上不受支持或是否存在其他错误。

【问题讨论】:

【参考方案1】:

我是 MLeap 的创建者之一,我们确实支持 Tokenizer!我很好奇,您要使用哪个版本的 MLeap?我认为您可能正在查看 TrueCar 的过时代码库,请在此处查看我们的新代码库:

https://github.com/combust/mleap

我们在这里也有相当完整的文档,包括支持的转换器的完整列表:

文档:http://mleap-docs.combust.ml/

变压器列表:http://mleap-docs.combust.ml/core-concepts/transformers/support.html

我希望这会有所帮助,如果仍然无法正常工作,请在 github 中提交问题,我们可以帮助您从那里进行调试。

【讨论】:

谢谢!但我遇到了我在这里发布的其他问题 - ***.com/questions/44522572/…。我希望在这里发布链接不会违反某些 *** 政策。 Hollin,是否有计划将 MLeap 集成到 Spark 主项目/分支中?对 Java 等其他语言的支持如何? 另外,我刚刚创建了***.com/questions/tagged/mleap 标签,你可能想关注它!

以上是关于无法在 mleap 中序列化 apache spark 变压器的主要内容,如果未能解决你的问题,请参考以下文章

mleap 中的服务葡萄酒分类模型

apache_conf Apache上的SPA

SPA-Auth0-API 令牌认证序列是啥?

无法序列化类 org.apache.hadoop.io.DoubleWritable - MongoDB Hadoop 连接器 + Spark + Python

Wagtail:序列化页面模型

在 Spark 上训练 Kmeans 算法失败