Spark streaming:java.lang.NoSuchFieldException:SHUTDOWN_HOOK_PRIORITY

时间:2015-12-26 13:03:46

标签: apache-spark spark-streaming

我尝试在独立模式下启动火花流(MacOSX)并获得以下错误:

  

线程中的异常" main" java.lang.ExceptionInInitializerError         在org.apache.spark.storage.DiskBlockManager.addShutdownHook(DiskBlockManager.scala:147)         在org.apache.spark.storage.DiskBlockManager。(DiskBlockManager.scala:54)         在org.apache.spark.storage.BlockManager。(BlockManager.scala:75)         在org.apache.spark.storage.BlockManager。(BlockManager.scala:173)         在org.apache.spark.SparkEnv $ .create(SparkEnv.scala:347)         在org.apache.spark.SparkEnv $ .createDriverEnv(SparkEnv.scala:194)         在org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:277)         在org.apache.spark.SparkContext。(SparkContext.scala:450)         在org.apache.spark.streaming.StreamingContext $ .createNewSparkContext(StreamingContext.scala:566)         在org.apache.spark.streaming.StreamingContext $ .createNewSparkContext(StreamingContext.scala:578)         在org.apache.spark.streaming.StreamingContext。(StreamingContext.scala:90)         在org.apache.spark.streaming.api.java.JavaStreamingContext。(JavaStreamingContext.scala:78)         at io.ascolta.pcap.PcapOfflineReceiver.main(PcapOfflineReceiver.java:103)       引起:java.lang.NoSuchFieldException:SHUTDOWN_HOOK_PRIORITY         在java.lang.Class.getField(Class.java:1584)         在org.apache.spark.util.SparkShutdownHookManager.install(ShutdownHookManager.scala:220)         at org.apache.spark.util.ShutdownHookManager $ .shutdownHooks $ lzycompute(ShutdownHookManager.scala:50)         at org.apache.spark.util.ShutdownHookManager $ .shutdownHooks(ShutdownHookManager.scala:48)         在org.apache.spark.util.ShutdownHookManager $ .addShutdownHook(ShutdownHookManager.scala:189)         在org.apache.spark.util.ShutdownHookManager $。(ShutdownHookManager.scala:58)         at org.apache.spark.util.ShutdownHookManager $。(ShutdownHookManager.scala)         ......还有13个

此问题在https://forums.databricks.com/questions/2227/shutdown-hook-priority-javalangnosuchfieldexceptio.html处与EC2相关,作为Hadoop2依赖关系进行了讨论。但是我在本地运行(现在),并且正在使用来自https://spark.apache.org/downloads.html的spark-1.5.2-bin-hadoop2.6.tgz二进制文件,我希望这会消除这种可能性。< / p>

我已将我的代码修改为基本上没有;像这样:

SparkConf conf = new SparkConf()
      .setAppName(appName)
      .setMaster(master);
  JavaStreamingContext ssc = new JavaStreamingContext(conf, new Duration(1000));

我已经改变了maven依赖关系,以确保1.5.2版本的所有火花内容都是一致的。然而,上面的ssc初始化失败了。所以我觉得是时候寻求帮助了。

使用shade插件构建环境是eclipse和maven。启动/运行是从eclipse调试器,而不是spark-submit,现在。

1 个答案:

答案 0 :(得分:0)

我今天遇到这个问题,因为我有两个罐子:我的pom中有hadoop-common-2.7.2.jar和hadoop-core-1.6.1.jar,他们都依赖hadoop.fs.FileSystem。

但在FileSystem-1.6.1中,FileSystem类中没有SHUTDOWN_HOOK_PRIORITY属性。和FileSystem-2.7.2有。但似乎我的代码认为FileSystem-1.6.1是正确的类。所以这个问题提出来了。

解决方案也很简单,在pom中删除hadoop-core-1.6.1。这意味着我们需要检查项目中的所有FileSystem是否高于2.x。