【问题标题】:Get an error when using Livy to submit Spark jobs: User did not initialize spark context使用 Livy 提交 Spark 作业时出错:用户没有初始化 Spark 上下文
【发布时间】:2020-03-03 03:21:21
【问题描述】:

我是 Spark 的新手,我正在关注此文档,通过 Livy https://docs.microsoft.com/en-us/azure/hdinsight/spark/apache-spark-livy-rest-interface 提交 Spark 作业

这是我的命令:

curl -k --user "username:password!" -v -H "Content-Type: application/json" -X POST -d '{ "file":"/test4spark/test4sparkhaha.jar", "className":"helloworld4spark.test" }' "https://xxx.azurehdinsight.net/livy/batches" -H "X-Requested-By: username"

文件 test4sparkhaha.jar 是一个超级简单的 Java 应用程序,它只包含一个类,并且只有一个打印“哈哈哈”的 main 方法,没有别的...... 我将 Eclipse 中的项目导出到 Runnable Jar 并尝试使用 Java -jarSpark-submit 在我的 spark 集群上运行它。两者都运作良好。 然后我开始尝试通过 Livy 提交作业,但总是失败,我在 Yarn 日志中发现以下错误:

19/11/06 14:36:06 错误 ApplicationMaster:未捕获的异常: java.lang.IllegalStateException:用户没有初始化火花上下文! 在 org.apache.spark.deploy.yarn.ApplicationMaster.runDriver(ApplicationMaster.scala:510) 在 org.apache.spark.deploy.yarn.ApplicationMaster.org$apache$spark$deploy$yarn$ApplicationMaster$$runImpl(ApplicationMaster.scala:345) 在 org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$run$2.apply$mcV$sp(ApplicationMaster.scala:260) 在 org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$run$2.apply(ApplicationMaster.scala:260) 在 org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$run$2.apply(ApplicationMaster.scala:260) 在 org.apache.spark.deploy.yarn.ApplicationMaster$$anon$5.run(ApplicationMaster.scala:815) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1869) 在 org.apache.spark.deploy.yarn.ApplicationMaster.doAsUser(ApplicationMaster.scala:814) 在 org.apache.spark.deploy.yarn.ApplicationMaster.run(ApplicationMaster.scala:259) 在 org.apache.spark.deploy.yarn.ApplicationMaster$.main(ApplicationMaster.scala:839) 在 org.apache.spark.deploy.yarn.ApplicationMaster.main(ApplicationMaster.scala)

这是我尝试的 Spark-submit 命令:

spark-submit --class helloworld4spark.test test4sparkhaha.jar

效果很好……

你们能帮我理解为什么它会在 Spark-submit 工作正常时出现错误吗?

【问题讨论】:

    标签: java apache-spark hadoop azure-hdinsight


    【解决方案1】:

    我猜你正在尝试使用 Livy 提交本地 .jar 文件。 对于 spark-submit 它可以工作(向 Yarn 提交作业支持它),但对于 Livy 服务器它没有。

    要使其正常工作,您需要将 jar 上传到 hdfs/wasbs/adls/http 可访问位置(确保您的 Spark 已配置为访问该位置)。

    请参考this指南第一段。

    【讨论】:

    • 您好 Aliaksandr,感谢您的回复!我一开始确实尝试过 WASB 路径,但它会抛出一个错误,说“ClassNotFound”。这很奇怪,因为该错误没有任何意义,所以我猜它给出此类错误的原因是 WASB 路径无法正确返回 jar 文件。于是我把本地的jar文件上传到了HDFS,“/test4spark/test4sparkhaha.jar”就是HDFS路径
    • 嗨,Chase,请务必使用wasb://<mycontainer>@<mystorageaccount>.blob.core.windows.net/path/to/test4sparkhaha.jar 格式的路径。还要确保您的集群已配置为访问该 blob 容器。通常在运行 HDInsight 时,会将 Blob 存储帐户挂载到群集,无需提供其他凭据即可访问该帐户,因此请使用它。而且你的类名看起来很不寻常,感觉就像你指向包名一样,应该是helloworld4spark.test.MyClassWithMain
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 2019-06-11
    • 2016-07-28
    • 1970-01-01
    • 2019-05-17
    相关资源
    最近更新 更多