我正在按照说明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
答案 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)