在火花中加载pmml(由sklearn生成)以进行预测但会出错

时间:2018-07-05 10:15:32

标签: pmml

我正在按照说明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,即使作者说新版本1.1.0已经支持PMML4.3,“ jpmml-evaluator-spark”也不支持PMML4.3。

2,我的“ random_forest.pmml”存在一些问题,因为此文件来自其他人

注意:

开发环境

火花2.1.1

scala 2.11.8

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

2 个答案:

答案 0 :(得分:0)

您使用的是Apache Spark 2.0、2.1或2.2,该版本已将JPMML模型库的旧版本(准确地说是1.2.15)添加到了应用程序类路径。 SPARK-15526中记录了此问题。

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

答案 1 :(得分:0)

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

import org.pmml4s.spark.ScoreModel

val model = ScoreModel.fromFile(pmmlFile)
val scoreDf = model.transform(df)