我的问题是我正在尝试执行使用 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 程序集之间存在一些冲突。
希望对您有所帮助。