执行 SBT 程序集时出错



我的问题是我正在尝试执行使用 sbt 生成的 fatjar 程序集,但我无法使其工作。 当我从IDE(intelliJ(运行我的代码时,它运行得很好。但是,一旦我使用 sbt 生成程序集,我就会收到 2 个不同的错误,具体取决于我用于执行 jar 的命令:从 java jvm 执行 jar

java -jar data-self-service-assembly-0.1.jar

做完一些事情后,我在日志上收到此错误:

[Ljava.lang.StackTraceElement;@7435a578.
No FileSystem for scheme: hdfs

从火花提交执行罐子:

spark2-submit --master yarn --name self-service data-self-service-assembly-0.1.jar

做完一些事情后,我在日志上收到此错误:

[Ljava.lang.StackTraceElement;@290c266c.
No suitable driver

我的想法已经不多了,所以任何可以帮助我解决我的问题将不胜感激。

谢谢。

试一试

1 .检查您的代码中是否有以下代码片段

.setMaster("local[2]")

您可以删除它

阿拉伯数字。检查火花配置的路径。

spark-submit --verbose --master yarn-cluster  --files   --properties-file {spark_conf_file_location} --class {main_class}  {jar_location}

终于我能够以这种方式解决问题:

  • 我使用此网址访问了火花历史记录服务器:http://quickstart.cloudera:18089/
  • 我获取执行日志以获取有关它的更多信息
  • 我看到 Spark 使用的类路径是这样的:Classpath","/opt/cloudera/parcels/SPARK2-2.2.0.cloudera2-1.cdh5.12.0.p0.232957/lib/spark2/jars/
  • 所以我在该路径中复制了 jdbc 的 jar 文件
  • 然后我用以下命令提交了作业:spark2-submit --master yarn --name self-service data-self-service-assembly-0.1.jar

问题是我没想到必须执行这些操作,因为我认为 sbt 能够组装所有需要的 jar 并识别它们稍后的位置,但这里 spark2-submit 使用的类路径和 sbt 程序集之间存在一些冲突。

希望对您有所帮助。

最新更新