【问题标题】:Spark streaming: java.lang.NoSuchFieldException: SHUTDOWN_HOOK_PRIORITY火花流:java.lang.NoSuchFieldException:SHUTDOWN_HOOK_PRIORITY
【发布时间】:2017-10-20 23:43:10
【问题描述】:

我正在尝试以独立模式 (MacOSX) 启动 spark 流式传输,并得到以下错误:

线程“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:27​​7) 在 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) 在 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) 在 org.apache.spark.util.ShutdownHookManager$.shutdownHooks$lzycompute(ShutdownHookManager.scala:50) 在 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) 在 org.apache.spark.util.ShutdownHookManager$.(ShutdownHookManager.scala) ... 13 更多

此症状在https://forums.databricks.com/questions/2227/shutdown-hook-priority-javalangnosuchfieldexceptio.html 上作为 Hadoop2 依赖项与 EC2 相关地进行了讨论。但我正在本地运行(目前),并且正在使用来自https://spark.apache.org/downloads.html 的 spark-1.5.2-bin-hadoop2.6.tgz 二进制文件,我希望它可以消除这种可能性。

我已经将我的代码精简到几乎没有;像这样:

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

我已经置换了 maven 依赖项,以确保所有 spark 内容在版本 1.5.2 上是一致的。然而,上面的 ssc 初始化无论如何都失败了。所以我认为是时候寻求帮助了。

构建环境是eclipse和maven,带有shade插件。启动/运行目前来自 eclipse 调试器,而不是 spark-submit。

【问题讨论】:

标签: apache-spark spark-streaming


【解决方案1】:

我今天遇到这个问题,是因为我的pom中有两个jar: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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-27
    • 2019-04-02
    • 2016-02-07
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    相关资源
    最近更新 更多