我有一个 Apache Spark 应用程序,到目前为止我一直在使用命令在本地机器上运行/测试:
spark --class "main.SomeMainClass" --master local[4] jarfile.jar
一切运行正常,但是当我将同样的工作提交给 Google Cloud Dataproc Engine 时,它会抛出NullPointerException
如下:
Caused by: java.lang.NullPointerException
at geneticClasses.FitnessCalculator.calculateFitness(FitnessCalculator.java:30)
at geneticClasses.StringIndividualMapReduce.calculateFitness(StringIndividualMapReduce.java:91)
at mapreduce.Mapper.lambda$mapCalculateFitness$3d84c37$1(Mapper.java:30)
at org.apache.spark.api.java.JavaPairRDD$$anonfun$pairFunToScalaFun$1.apply(JavaPairRDD.scala:1018)
at
.
.
.
这个错误是从工作节点抛出的,因为它在map
阶段发生。除了本地模式只是将工作节点模拟为单独的线程之外,本地模式和实际集群之间有什么区别?FitnessCalculator
位于驱动程序节点上,所有方法都是静态的。我是否需要制作它Serializable
以便可以将其与其他代码一起运送到工作节点?
谢谢