我正在用mllib在spark中训练一个模型并保存它:
val model = SVMWithSGD.train(training, numIterations)
model.save(sc, "~/model")
但我很难在没有火花的情况下从java应用程序加载它来进行实时预测。
SparkConf sconf = new SparkConf().setAppName("Application").setMaster("local");
SparkContext sc = new SparkContext(sconf);
SVMModel model = SVMModel.load(sc, "/model");
我得到:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/SparkConf
at ModelUser$.main(ModelUser.scala:11)
at ModelUser.main(ModelUser.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: java.lang.ClassNotFoundException: org.apache.spark.SparkConf
有没有一种方法可以在普通的java应用程序中加载模型?
在此处查看PMML模型导出
spark中的PPML模型导出不再维护,只有旧的RDD api支持它。我一直在使用jpmml-sparkml来解决这个问题。它还具有用于独立模型执行的java运行时。