尝试使用JPmml将Spark中的Pipeline Model转换为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”
最佳答案
我添加了有关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库。此应用程序类路径/打包问题在其文档中特别介绍。