尝试使用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”
答案 0 :(得分:1)
我添加了有关JPmml的所有依赖项。
您已添加所有依赖项,但您的应用程序无法看到它们,因为在您的应用程序类路径中,提供了一个Apache Spark ML org.jpmml:pmml-model:1.2.X
(方法MiningField#setFieldUsage(MiningField$FieldUsage)
),它会遮挡您的{ {1}}(方法org.jpmml:pmml-model:1.3.X
):https://issues.apache.org/jira/browse/SPARK-15526
您应该停止重新发明轮子,并使用JPMML-SparkML-Package库。此应用程序类路径/打包问题在其文档中有详细介绍。