【问题标题】:Cannot run ALS.train, error: java.lang.IllegalArgumentException无法运行 ALS.train,错误:java.lang.IllegalArgumentException
【发布时间】:2018-07-21 00:38:36
【问题描述】:

我正在尝试运行ALS of PySpark。我复制并粘贴了链接中提供的示例代码。但是,错误java.lang.IllegalArgumentException 出现在以下行:

model = ALS.train(ratings, rank, numIterations)

请问我在这里需要调查哪些可能的问题?

我的 Spark 版本是 2.2.1,我的 Java 版本是 9.0.4。但是,我不确定 Spark 是否使用了正确版本的 Java,尽管我设置了环境路径并且命令“java -version”确实返回“9.0.4”。

错误:

Py4JJavaError: 调用时出错 z:org.apache.spark.mllib.api.python.SerDe.pythonToJava。 : java.lang.IllegalArgumentException 在 org.apache.xbean.asm5.ClassReader.(Unknown Source) at org.apache.xbean.asm5.ClassReader.(Unknown Source) at org.apache.xbean.asm5.ClassReader.(Unknown Source) at org.apache.spark.util.ClosureCleaner$.getClassReader(ClosureCleaner.scala:46) 在 org.apache.spark.util.FieldAccessFinder$$anon$3$$anonfun$visitMethodInsn$2.apply(ClosureCleaner.scala:443) 在 org.apache.spark.util.FieldAccessFinder$$anon$3$$anonfun$visitMethodInsn$2.apply(ClosureCleaner.scala:426) 在 scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733) 在 scala.collection.mutable.HashMap$$anon$1$$anonfun$foreach$2.apply(HashMap.scala:103) 在 scala.collection.mutable.HashMap$$anon$1$$anonfun$foreach$2.apply(HashMap.scala:103) 在 scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:230) 在 scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:40) 在 scala.collection.mutable.HashMap$$anon$1.foreach(HashMap.scala:103) 在 scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:732) 在 org.apache.spark.util.FieldAccessFinder$$anon$3.visitMethodInsn(ClosureCleaner.scala:426) 在 org.apache.xbean.asm5.ClassReader.a(未知来源) org.apache.xbean.asm5.ClassReader.b(未知来源)在 org.apache.xbean.asm5.ClassReader.accept(未知来源)在 org.apache.xbean.asm5.ClassReader.accept(未知来源)在 org.apache.spark.util.ClosureCleaner$$anonfun$org$apache$spark$util$ClosureCleaner$$clean$14.apply(ClosureCleaner.scala:257) 在 org.apache.spark.util.ClosureCleaner$$anonfun$org$apache$spark$util$ClosureCleaner$$clean$14.apply(ClosureCleaner.scala:256) 在 scala.collection.immutable.List.foreach(List.scala:381) 在 org.apache.spark.util.ClosureCleaner$.org$apache$spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:256) 在 org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:156) 在 org.apache.spark.SparkContext.clean(SparkContext.scala:2294) 在 org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1.apply(RDD.scala:794) 在 org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1.apply(RDD.scala:793) 在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151) 在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112) 在 org.apache.spark.rdd.RDD.withScope(RDD.scala:362) 在 org.apache.spark.rdd.RDD.mapPartitions(RDD.scala:793) 在 org.apache.spark.mllib.api.python.SerDeBase.pythonToJava(PythonMLLibAPI.scala:1349) 在 org.apache.spark.mllib.api.python.SerDe.pythonToJava(PythonMLLibAPI.scala) 在 jdk.internal.reflect.GeneratedMethodAccessor76.invoke(未知 来源)在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:564) 在 py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) 在 py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) 在 py4j.Gateway.invoke(Gateway.java:280) 在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 在 py4j.commands.CallCommand.execute(CallCommand.java:79) 在 py4j.GatewayConnection.run(GatewayConnection.java:214) 在 java.base/java.lang.Thread.run(Thread.java:844)

【问题讨论】:

    标签: apache-spark pyspark apache-spark-mllib


    【解决方案1】:

    我已经找到了问题所在。 Spark 2.2.1 不支持 Java 9.0.4。也许我误解了教程的“Java 8+”部分。

    如果有人遇到与我相同的错误,请选择 Java 1.8.0!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      • 2017-09-23
      • 2019-10-04
      • 1970-01-01
      相关资源
      最近更新 更多