无法在mleap中序列化逻辑回归

时间:2017-06-13 13:12:44

标签: apache-spark serialization apache-spark-sql apache-spark-mllib mleap

java.lang.AssertionError:断言失败:此操作仅支持二进制逻辑回归

我正在尝试在mleap中序列化一个spark管道。

我在我的管道中使用Tokenizer,HashingTF和LogisticRegression。

当我尝试序列化我的管道时,我得到上述错误。 这是我用来序列化管道的代码 -

    val pipeline = Pipeline(pipelineConfig)

    val model = pipeline.fit(data)

    (for(bf <- managed(BundleFile("jar:file:/tmp/abc.model.twitter.zip"))) yield {
        model.writeBundle.format(SerializationFormat.Json).save(bf).get
    }).tried.get

    sc.stop()

根据文档,mleap支持LR。所以我完全不知道我在这里做错了什么。

1 个答案:

答案 0 :(得分:1)

yashdosi,

MLeap默认支持Spark 2.0(对不起,这没有很好的记录)。在2.0中,仅支持二进制逻辑回归。随着2.1的引入,存在多项Logistic回归。由于MLeap旨在支持2.0.0及更高版本,因此我们内置了一种机制来选择您正在使用的Spark版本(目前MLeap支持2.0和2.1,但默认为2.0)。

尝试将此行添加到资源目录中的application.conf文件中,它将让MLeap知道在序列化时使用Spark 2.1变换器:

// application.conf in src/main/resources
ml.combust.mleap.spark.registry.default = ${ml.combust.mleap.spark.registry.v21}