獲取只有通過與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