【问题标题】:load pmml (generated by sklearn) in spark to predict but get error在 spark 中加载 pmml(由 sklearn 生成)进行预测但出错
【发布时间】:2018-07-05 10:15:32
【问题描述】:

我正在按照指令jpmml-evaluator-spark 加载本地 pmml 模型 我的代码如下

import java.io.File
import org.jpmml.evaluator.spark._
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql._

// load pmml
val new File(getClass.getClassLoader.getResource("random_forest.pmml").getFile)

// create evaluator 
val evaluator = EvaluatorUtil.createEvaluator(pmmlFile)

我无法直接显示错误信息,所以我把它放在here

猜测:

我认为有一些原因可能会导致这个问题

1、“jpmml-evaluator-spark”不支持PMML4.3,即使作者说新版本1.1.0已经支持PMML4.3

2,我的“random_forest.pmml”有一些问题,因为这个文件来自别人

注意:

开发环境

火花 2.1.1

斯卡拉 2.11.8

我在本地运行,mac系统版本是OS X El Capitan Version 10.11.6

【问题讨论】:

    标签: pmml


    【解决方案1】:

    您正在使用 Apache Spark 2.0、2.1 或 2.2,它们在您的应用程序类路径中添加了旧版 JPMML-Model 库(准确地说是 1.2.15)。这个问题记录在SPARK-15526

    解决方案 - 按照 JPMML-Evaluator-Spark 文档中的说明修复您的应用程序类路径(或者,考虑切换到 Apache Spark 2.3.0 或更高版本)。

    【讨论】:

    • 我的 spark 版本是 2.1.1,我无法更改它,因为这个版本与生产环境相同。我会试试你提供的解决方案,稍后再回复
    • @Binbin 然后在本地安装Spark 2.3.0 可以看到JPMML-Evaluator-Spark对PMML 4.3文档评分没有问题。
    • 谢谢。听从你的建议。我将 spark 从 2.1.1 升级到 2.3.1,然后问题就解决了。而且我还找到了一个来自 java pmml API devloper 的链接也说了同样的解决方案。这是,github.com/jpmml/jpmml-evaluator-spark/issues/20
    【解决方案2】:

    在Spark中使用PMML的另一种选择是PMML4S-Spark,它支持最新的PMML4.4,例如:

    import org.pmml4s.spark.ScoreModel
    
    val model = ScoreModel.fromFile(pmmlFile)
    val scoreDf = model.transform(df)
    

    【讨论】:

      猜你喜欢
      • 2019-05-19
      • 2017-08-10
      • 2018-11-11
      • 2017-11-22
      • 2016-07-06
      • 2019-10-29
      • 2018-12-20
      • 2018-05-05
      • 2019-09-01
      相关资源
      最近更新 更多