执行SBT程序集时出错

时间:2018-06-06 09:04:54

标签: scala apache-spark jdbc 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

从spark-submit执行jar:

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

做了一些事后,我在日志中遇到了这个错误:

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

我的想法已经不多了,所以我将非常感谢您解决我的问题的任何帮助。

谢谢。

2 个答案:

答案 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)

最后我能够通过这种方式解决问题:

  • 我使用此网址访问了火花历史记录服务器: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能够装配所有需要的罐子并识别它们的位置,但是这里使用的类路径之间存在一些冲突。 spark2-submit和sbt assembly。

希望它有所帮助。