Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Java Apache Spark作业在本地运行,但在Google云集群上抛出空指针_Java_Apache Spark_Google Cloud Dataproc - Fatal编程技术网

Java Apache Spark作业在本地运行,但在Google云集群上抛出空指针

Java Apache Spark作业在本地运行,但在Google云集群上抛出空指针,java,apache-spark,google-cloud-dataproc,Java,Apache Spark,Google Cloud Dataproc,我有一个Apache Spark应用程序,到目前为止,我一直在使用以下命令在本地计算机上运行/测试: spark --class "main.SomeMainClass" --master local[4] jarfile.jar 但是,当我向Google Cloud Dataproc引擎提交这项相同的作业时,它抛出了NullPointerException,如下所示: Caused by: java.lang.NullPointerException at geneticClasses.Fi

我有一个Apache Spark应用程序,到目前为止,我一直在使用以下命令在本地计算机上运行/测试:

spark --class "main.SomeMainClass" --master local[4] jarfile.jar
但是,当我向Google Cloud Dataproc引擎提交这项相同的作业时,它抛出了
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
位于驱动程序节点上,所有方法都是静态的。我是否需要将其
序列化
,以便将其与其他代码一起发送到工作节点


谢谢

您说
FitnessCalculator
只有静态方法,并且它在本地模式下工作。我猜您在驱动程序中设置了一些静态对象(初始化为
null
),然后尝试在
FitnessCalculator.java:30
的Spark任务中使用。不幸的是,这行不通


对静态字段的更改不会分发给Spark workers。它在
local
模式下工作的原因是,工作程序与驱动程序在同一个JVM(Java虚拟机)中运行,因此他们碰巧可以访问新值。

您说
FitnessCalculator
只有静态方法,并且它在本地模式下工作。我猜您在驱动程序中设置了一些静态对象(初始化为
null
),然后尝试在
FitnessCalculator.java:30
的Spark任务中使用。不幸的是,这行不通


对静态字段的更改不会分发给Spark workers。它在
local
模式下工作的原因是工作程序与驱动程序在同一个JVM(Java虚拟机)中运行,因此他们碰巧可以访问新值。

我不确定我们是否有足够的信息。你能发布相关代码吗?我希望我能,但这是我的BSc最后一年的项目,由于剽窃或共谋,我不能把我的任何代码放在网上。我担心您可能没有足够的信息来了解问题所在,您说
FitnessCalculator
只有静态方法,并且它在
local
模式下工作。我猜您在驱动程序中设置了一些静态对象(初始化为
null
),然后尝试在
FitnessCalculator.java:30
的Spark任务中使用。这是行不通的。好吧,我想当我现在考虑它时,它是有意义的,因为您不能从worker访问位于驱动程序节点上的静态方法和字段。我更改了代码,所以我序列化FitnessCalculator并将其与其他代码一起发送到worker节点,它解决了上述问题。谢谢你。我会给下一个有这个问题的人一个答案。我不确定我们是否有足够的信息。你能发布相关代码吗?我希望我能,但这是我的BSc最后一年的项目,由于剽窃或共谋,我不能把我的任何代码放在网上。我担心您可能没有足够的信息来了解问题所在,您说
FitnessCalculator
只有静态方法,并且它在
local
模式下工作。我猜您在驱动程序中设置了一些静态对象(初始化为
null
),然后尝试在
FitnessCalculator.java:30
的Spark任务中使用。这是行不通的。好吧,我想当我现在考虑它时,它是有意义的,因为您不能从worker访问位于驱动程序节点上的静态方法和字段。我更改了代码,所以我序列化FitnessCalculator并将其与其他代码一起发送到worker节点,它解决了上述问题。谢谢你。我会给下一个有这个问题的人一个答案。