我已经通过使用火花提交提交的工作训练了PySpark ML模型。我无法通过另一项工作来加载此模型。我使用spark 2.2.0和python 2.6
我的代码
from pyspark.sql import SparkSession
from pyspark.ml.regression import LinearRegression
spark = SparkSession.builder.appName("load_model").enableHiveSupport().getOrCreate()
model_path = "/home/lr_model"
lr_model = LinearRegression.load(model_path)
print("Coefficients: " + str(lr_model.coefficients))
print("Intercept: " + str(lr_model.intercept))
还有我收到的不清楚的错误消息:
回溯(最近通话最近一次):
文件“ load_model.py”,第6行,位于lr_model = LinearRegression.read()。load(model_path)
文件“ /hadoop/yarn/local/usercache/appcache/pyspark.zip/pyspark/ml/util.py”, 加载文件中的第176行 “ /hadoop/yarn/local/usercache/appcache/py4j-0.10.1-src.zip/py4j/java_gateway.py”, 第933行,在通话文件中 “ /hadoop/yarn/local/usercache/appcache/pyspark.zip/pyspark/sql/utils.py”, 装饰文件中的第63行 “ /hadoop/yarn/local/usercache/appcache/py4j-0.10.1-src.zip/py4j/protocol.py”, get_return_value py4j.protocol.Py4JJavaError中的第312行:错误 发生在调用o41.load时。 :java.lang.NoSuchMethodException: org.apache.spark.ml.regression.LinearRegressionModel。(java.lang.String) 在java.lang.Class.getConstructor0(Class.java:3082)在 java.lang.Class.getConstructor(Class.java:1825)在 org.apache.spark.ml.util.DefaultParamsReader.load(ReadWrite.scala:337) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:498)在 py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:237)在 py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)在 py4j.Gateway.invoke(Gateway.java:280)在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:128) 在py4j.commands.CallCommand.execute(CallCommand.java:79)处 py4j.GatewayConnection.run(GatewayConnection.java:211)位于 java.lang.Thread.run(Thread.java:748)