【发布时间】:2019-04-04 04:51:06
【问题描述】:
以下是我的简单代码。当我在 Spark Local 模式下运行它时,它运行完美。但是当我尝试使用 1 个驱动程序和 1 个工作人员在集群模式下运行它时,它给了我以下异常。
我尝试了一些答案中提到的 setJars,但它没有帮助我。
public static void main(String[] args) throws IOException {
SparkConf conf = new SparkConf().setAppName("example.ClusterPractice").setMaster("spark://192.168.42.18:7077");
conf.setJars(new String[]{"E:\\Eclipses\\neon new projects\\eclipse\\neon new projects\\spark-practice\\out\\artifacts\\spark_practice_jar\\spark-practice.jar"});
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<Integer> numbers = sc.parallelize(Arrays.asList(1, 2, 3));
System.out.println("Reduce");
long total = numbers.reduce((n1,n2)-> n1+n2);
System.out.println(total);
}
我得到的异常如下:
驱动程序堆栈跟踪: 在 org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1602) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1590) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1589) 在 scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) 在 scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48) 在 org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1589) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:831) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:831) 在 scala.Option.foreach(Option.scala:257) 在 org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:831) 在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.doOnReceive(DAGScheduler.scala:1823) 在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1772) 在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1761) 在 org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48) 在 org.apache.spark.scheduler.DAGScheduler.runJob(DAGScheduler.scala:642) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:2034) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:2131) 在 org.apache.spark.rdd.RDD$$anonfun$reduce$1.apply(RDD.scala:1029) 在 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:363) 在 org.apache.spark.rdd.RDD.reduce(RDD.scala:1011) 在 org.apache.spark.api.java.JavaRDDLike$class.reduce(JavaRDDLike.scala:385) 在 org.apache.spark.api.java.AbstractJavaRDDLike.reduce(JavaRDDLike.scala:45) 在 example.ClusterPractice.main(ClusterPractice.java:22) 原因:java.lang.ClassCastException:无法将 java.lang.invoke.SerializedLambda 的实例分配给 org.apache.spark 类型的字段 org.apache.spark.api.java.JavaPairRDD$$anonfun$toScalaFunction2$1.fun$2。 org.apache.spark.api.java.JavaPairRDD$$anonfun$toScalaFunction2$1 实例中的 api.java.function.Function2 在 java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2133) 在 java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java:1305) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2251) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2169) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2027) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2245) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2169) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2027) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2245) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2169) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2027) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2245) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2169) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2027) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:422) 在 org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:75) 在 org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:114) 在 org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:80) 在 org.apache.spark.scheduler.Task.run(Task.scala:109) 在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:748)
【问题讨论】:
标签: apache-spark