Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何在spark.ml中反序列化管道模型?_Scala_Apache Spark_Machine Learning_Apache Spark Ml - Fatal编程技术网

Scala 如何在spark.ml中反序列化管道模型?

Scala 如何在spark.ml中反序列化管道模型?,scala,apache-spark,machine-learning,apache-spark-ml,Scala,Apache Spark,Machine Learning,Apache Spark Ml,我序列化了一个Spark ML管道模型,该模型由许多转换器(org.apache.Spark.ML.Transformer)和几个逻辑回归学习器(org.apache.Spark.ML.classification.Logistic回归)组成。 它在我创建模型的Windows机器上运行良好。我使用java.io.ObjectOutputStream将模型序列化到磁盘,并使用java.io.ObjectOutputStream将其读回 通过sbt和我相应的单元测试,一切都很好。然而,当我将代码组装

我序列化了一个Spark ML管道模型,该模型由许多转换器(org.apache.Spark.ML.Transformer)和几个逻辑回归学习器(org.apache.Spark.ML.classification.Logistic回归)组成。 它在我创建模型的Windows机器上运行良好。我使用java.io.ObjectOutputStream将模型序列化到磁盘,并使用java.io.ObjectOutputStream将其读回

通过sbt和我相应的单元测试,一切都很好。然而,当我将代码组装到jar中并尝试在服务器上的Spark shell中运行相同的代码时,我(第一个)transformer会得到一个ClassNotFoundException。堆栈跟踪包括在下面

我在build.sbt文件中使用fork:=true,因为我认为这可能与相关,但这似乎没有帮助

无论我是尝试从jar文件还是直接从磁盘加载模型(如下所示),都没有区别

如何反序列化管道

Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-49-generic x86_64)

spark-shell -J-Xmx4g --master local[2] --jars myJar.jar
Spark assembly has been built with Hive, including Datanucleus jars on classpath

Welcome to
   ____              __
  / __/__  ___ _____/ /__
 _\ \/ _ \/ _ `/ __/  '_/
/___/ .__/\_,_/_/ /_/\_\   version 1.3.0
   /_/

Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_40)
Type in expressions to have them evaluated.
Type :help for more information.
Spark context available as sc.
SQL context available as sqlContext.

scala> import com.myCompany.spark.classifier._
import com.myCompany.spark.classifier._
scala> import java.io._
import java.io._

scala> val l = new LabelTransformer(2)
l: com.myCompany.spark.classifier.LabelTransformer = com.myCompany.spark.classifier.LabelTransformer@61d24347

scala> val l2 = new ObjectInputStream(new FileInputStream("log-reg_2_10.model")).readObject
java.lang.ClassNotFoundException: com.myCompany.spark.classifier.LabelTransformer
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:626)
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1613)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1707)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1345)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
    at scala.collection.mutable.HashMap$$anonfun$readObject$1.apply(HashMap.scala:142)
    at scala.collection.mutable.HashMap$$anonfun$readObject$1.apply(HashMap.scala:142)
    at scala.collection.mutable.HashTable$class.init(HashTable.scala:105)
    at scala.collection.mutable.HashMap.init(HashMap.scala:39)
    at scala.collection.mutable.HashMap.readObject(HashMap.scala:142)
    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 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
    at scala.collection.mutable.HashMap$$anonfun$readObject$1.apply(HashMap.scala:142)
    at scala.collection.mutable.HashMap$$anonfun$readObject$1.apply(HashMap.scala:142)
    at scala.collection.mutable.HashTable$class.init(HashTable.scala:105)
    at scala.collection.mutable.HashMap.init(HashMap.scala:39)
    at scala.collection.mutable.HashMap.readObject(HashMap.scala:142)
    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 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:25)
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:30)
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:32)
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:34)
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:36)
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:38)
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:40)
    at $iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:42)
    at $iwC$$iwC$$iwC$$iwC.<init>(<console>:44)
    at $iwC$$iwC$$iwC.<init>(<console>:46)
    at $iwC$$iwC.<init>(<console>:48)
    at $iwC.<init>(<console>:50)
    at <init>(<console>:52)
    at .<init>(<console>:56)
    at .<clinit>(<console>)
    at .<init>(<console>:7)
    at .<clinit>(<console>)
    at $print(<console>)
    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 org.apache.spark.repl.SparkIMain$ReadEvalPrint.call(SparkIMain.scala:1065)
    at org.apache.spark.repl.SparkIMain$Request.loadAndRun(SparkIMain.scala:1338)
    at org.apache.spark.repl.SparkIMain.loadAndRunReq$1(SparkIMain.scala:840)
    at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:871)
    at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:819)
    at org.apache.spark.repl.SparkILoop.reallyInterpret$1(SparkILoop.scala:856)
    at org.apache.spark.repl.SparkILoop.interpretStartingWith(SparkILoop.scala:901)
    at org.apache.spark.repl.SparkILoop.command(SparkILoop.scala:813)
    at org.apache.spark.repl.SparkILoop.processLine$1(SparkILoop.scala:656)
    at org.apache.spark.repl.SparkILoop.innerLoop$1(SparkILoop.scala:664)
    at org.apache.spark.repl.SparkILoop.org$apache$spark$repl$SparkILoop$$loop(SparkILoop.scala:669)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply$mcZ$sp(SparkILoop.scala:996)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply(SparkILoop.scala:944)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply(SparkILoop.scala:944)
    at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135)
    at org.apache.spark.repl.SparkILoop.org$apache$spark$repl$SparkILoop$$process(SparkILoop.scala:944)
    at org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:1058)
    at org.apache.spark.repl.Main$.main(Main.scala:31)
    at org.apache.spark.repl.Main.main(Main.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 org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
欢迎使用Ubuntu 14.04.2 LTS(GNU/Linux 3.13.0-49-generic x86_64)
sparkshell-J-Xmx4g--master local[2]--jars myJar.jar
Spark assembly是用Hive构建的,包括类路径上的Datanucleus JAR
欢迎来到
____              __
/ __/__  ___ _____/ /__
_\ \/ _ \/ _ `/ __/  '_/
/___/.版本1.3.0
/_/
使用Scala 2.10.4版(Java HotSpot(TM)64位服务器虚拟机,Java 1.8.0(40)
键入要计算的表达式。
键入:有关详细信息的帮助。
Spark上下文作为sc提供。
SQL上下文作为sqlContext可用。
scala>导入com.myCompany.spark.classifier_
导入com.myCompany.spark.classifier_
scala>导入java.io_
导入java.io_
scala>val l=新标签变压器(2)
l:com.myCompany.spark.classifier.LabelTransformer=com.myCompany.spark.classifier。LabelTransformer@61d24347
scala>val l2=新对象输入流(新文件输入流(“log-reg_2_10.model”)).readObject
java.lang.ClassNotFoundException:com.myCompany.spark.classifier.LabelTransformer
位于java.net.URLClassLoader.findClass(URLClassLoader.java:381)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:348)
位于java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:626)
位于java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1613)
位于java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518)
位于java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774)
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
位于java.io.ObjectInputStream.readArray(ObjectInputStream.java:1707)
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1345)
位于java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
位于scala.collection.mutable.HashMap$$anonfun$readObject$1.apply(HashMap.scala:142)
位于scala.collection.mutable.HashMap$$anonfun$readObject$1.apply(HashMap.scala:142)
位于scala.collection.mutable.HashTable$class.init(HashTable.scala:105)
位于scala.collection.mutable.HashMap.init(HashMap.scala:39)
位于scala.collection.mutable.HashMap.readObject(HashMap.scala:142)
在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:497)
位于java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
位于java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
位于java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
位于java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
位于java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
位于java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
位于java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
位于java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
位于java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
位于java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
位于java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
位于java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
位于java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
位于scala.collection.mutable.HashMap$$anonfun$readObject$1.apply(HashMap.scala:142)
位于scala.collection.mutable.HashMap$$anonfun$readObject$1.apply(HashMap.scala:142)
位于scala.collection.mutable.HashTable$class.init(HashTable.scala:105)
位于scala.collection.mutable.HashMap.init(HashMap.scala:39)
位于scala.collection.mutable.HashMap.readObject(HashMap.scala:142)
在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:497)
位于java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
位于java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
位于java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
在java.io.ObjectInpu