获取只有通过与Apache的星火spark-submit.sh运行这个错误,这运行正常的IntelliJ中与正常运行的配置,所以我非常确信,这是一些关于如何星火想要访问的构造,这是我们希望私营:MVCE与静态构造函数的Apache Spark/Java反射错误?
类org.apache.spark.deploy.SparkSubmit $不能访问的 类jpsgcs.thold.AnyOldClass成员与修饰语 “公共静态”
这里的MVCE:
import java.io.IOException;
import java.io.Serializable;
class AnyOldClass implements Serializable {
public String anyOldString = null;
private AnyOldClass() throws IOException {
anyOldString = new String("hello dere");
}
public static void main(String[] args) throws Exception {
AnyOldClass anyOldInstance = new AnyOldClass();
anyOldInstance.go();
}
private void go() {
System.out.println("Visualize ");
}
}
完整版下面的错误,这MVCE开始为我们做出了构造私人工作过罚款全功能的基于星火计划。缺乏SparkContext和SparkConf不是问题。
我们有这个类,通过几级继承。为了创建这个类的RDD,我们必须在继承链上设置五个级别,从而使所有这些级别的可序列化。序列化这么深的堆栈会变得很难看,对吗? (这之前,我们甚至尝试KRYO)
我们认为这是一个更好的办法来运行每个核心一个工人,导致每一个核心的JVM。在每个JVM中,我们想要获得这个类的一个实例。然后,我们将使用另一个类,我们并行的JavaRDD修改这个类的内容,每个核心/ JVM一个分区,与基于RDD级到位修改这一类的每个分区的每个元素。根据要求
完整堆栈跟踪:
Exception in thread "main" java.lang.IllegalAccessException: Class org.apache.spark.deploy.SparkSubmit$ can not access a member of class jpsgcs.thold.AnyOldClass with modifiers "public static"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:296)
at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:288)
at java.lang.reflect.Method.invoke(Method.java:490)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:672)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:120)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
@Samuel地感谢......我加入了斯卡拉标记,因为Spark是斯卡拉 – JimLohse