我的问题是我正在尝试执行使用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
从spark-submit执行jar:
spark2-submit --master yarn --name self-service data-self-service-assembly-0.1.jar
做了一些事后,我在日志中遇到了这个错误:
[Ljava.lang.StackTraceElement;@290c266c.
No suitable driver
我的想法已经不多了,所以我将非常感谢您解决我的问题的任何帮助。
谢谢。
答案 0 :(得分:0)
刺伤它
1。检查代码中是否有以下代码段
.setMaster("local[2]")
您可以删除
2。检查spark配置的路径。
spark-submit --verbose --master yarn-cluster --files --properties-file {spark_conf_file_location} --class {main_class} {jar_location}
答案 1 :(得分:0)
最后我能够通过这种方式解决问题:
Classpath","/opt/cloudera/parcels/SPARK2-2.2.0.cloudera2-1.cdh5.12.0.p0.232957/lib/spark2/jars/
spark2-submit --master yarn --name self-service data-self-service-assembly-0.1.jar
问题是我没想到要做这些动作,因为我认为sbt能够装配所有需要的罐子并识别它们的位置,但是这里使用的类路径之间存在一些冲突。 spark2-submit和sbt assembly。
希望它有所帮助。