JMML Apache Spark org.dmg.pmml.MiningField.setUsageType 函数未找到错误

JMML Apache Spark org.dmg.pmml.MiningField.setUsageType function not found error

尝试使用 JPMml 将 spark 中的 PipeLine 模型转换为 PMml 时出现以下错误。

java.lang.NoSuchMethodError: org.dmg.pmml.MiningField.setUsageType(Lorg/dmg/pmml/MiningField$UsageType;)Lorg/dmg/pmml/MiningField;

我已经添加了关于 JPmml 的所有依赖项。

// https://mvnrepository.com/artifact/org.jpmml/jpmml-sparkml libraryDependencies += "org.jpmml" % "jpmml-sparkml" % "1.1.6"

// https://mvnrepository.com/artifact/org.jpmml/pmml-model libraryDependencies += "org.jpmml" % "pmml-model" % "1.3.6"

// https://mvnrepository.com/artifact/org.jpmml/pmml-evaluator libraryDependencies += "org.jpmml" % "pmml-evaluator" % "1.3.5"

I have added all the dependencies regarding JPmml.

您已添加所有依赖项,但您的应用程序看不到它们,因为在您的应用程序类路径中,提供了一个 Apache Spark ML org.jpmml:pmml-model:1.2.X(具有方法 MiningField#setFieldUsage(MiningField$FieldUsage)),它隐藏了你的org.jpmml:pmml-model:1.3.X(有方法MiningField#setUsageType(MiningField$UsageType)):https://issues.apache.org/jira/browse/SPARK-15526

您应该停止重新发明轮子,并使用 JPMML-SparkML-Package 库。此应用程序 classpath/packaging 问题在其文档中有具体说明。