【问题标题】:NoClassDefFoundError:org/apache/spark/sql/hive/HiveContextNoClassDefFoundError:org/apache/spark/sql/hive/HiveContext
【发布时间】:2016-09-08 18:23:15
【问题描述】:

我正在尝试使用 oozie 来调用 spark 作业。并且使用 spark-submit 可以在没有 oozie 的情况下成功运行 spark 作业:

spark-submit --class xxx --master yarn-cluster --files xxx/hive-site.xml --jars xxx/datanucleus-api-jdo-3.2.6.jar,xxx/datanucleus-rdbms-3.2.9.jar,xxx/datanucleus-core-3.2.10.jar xxx.jar

但是当我尝试使用 oozie 调用作业时,它总是会失败并出现以下错误。我在 workflow.xml 中涉及了 3 个外部 jar 和 hive-site.xml

Launcher exception: org/apache/spark/sql/hive/HiveContext
java.lang.NoClassDefFoundError: org/apache/spark/sql/hive/HiveContext
    at xxx$.main(xxx.scala:20)
    at xxx.main(xxx.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:328)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
    at org.apache.oozie.action.hadoop.SparkMain.runSpark(SparkMain.java:104)
    at org.apache.oozie.action.hadoop.SparkMain.run(SparkMain.java:95)
    at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:47)
    at org.apache.oozie.action.hadoop.SparkMain.main(SparkMain.java:38)

我的 scala 代码的第 20 行是:

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

有人知道这个错误吗?我已经卡了好几天了。

谢谢!

【问题讨论】:

  • 也许你可以尝试做import org.apache.spark.sql.hive._,然后直接创建上下文:val sqlContext = new HiveContext(sc)
  • @DanieldePaula 在我的 scala 代码中,第 20 行是 val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc) 应该与您的建议相同?
  • 我的建议只是尝试单独导入该类。只是快速尝试帮助您调试问题,因为错误可能会改变。
  • 您是否检查过 Oozie ShareLib 中的 Spark 版本(hdfs:///user/oozie/share/lib/*/spark/ 或类似的东西)完全与您在命令行中使用的版本相同?使用相同的编译选项??例如,您可以从 Apache 网站下载的 Spark 二进制文件在编译时没有 Hive 支持...
  • @SamsonScharfrichter 感谢您的回复。我可以按照您提到的路径看到 spark 目录,但不确定如何检查此 spark 的版本。我只能在 spark 文件夹中看到一堆 jar 文件。您认为哪个 jar 文件需要 Hive 支持? spark-core_2.10-1.1.0.jar?

标签: apache-spark hive apache-spark-sql hadoop-yarn oozie


【解决方案1】:

刚回来回答我自己的问题。这个问题最终通过更新 oozie 的共享库来解决。基本上,共享库中的 jar 不完整,我的工作无法运行。所以我首先导入了一些额外的 jar,例如 spark-hive 和 spark-mllib。此外,oozie 共享库中提供的 jar 太旧,也需要更新以避免一些潜在的错误。

【讨论】:

    猜你喜欢
    • 2019-06-07
    • 1970-01-01
    • 2018-07-14
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 2018-05-06
    相关资源
    最近更新 更多