Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 执行SBT程序集时出错_Scala_Apache Spark_Jdbc_Sbt - Fatal编程技术网

Scala 执行SBT程序集时出错

Scala 执行SBT程序集时出错,scala,apache-spark,jdbc,sbt,Scala,Apache Spark,Jdbc,Sbt,我的问题是我试图执行一个用sbt生成的fatjar程序集,但我无法使它工作。 当我从IDE(intelliJ)运行代码时,它工作得非常好。但是,使用sbt生成程序集后,根据执行jar时使用的命令,会出现两种不同的错误: 从java jvm执行jar: java -jar data-self-service-assembly-0.1.jar spark2-submit --master yarn --name self-service data-self-service-assembly-0.1

我的问题是我试图执行一个用sbt生成的fatjar程序集,但我无法使它工作。 当我从IDE(intelliJ)运行代码时,它工作得非常好。但是,使用sbt生成程序集后,根据执行jar时使用的命令,会出现两种不同的错误: 从java jvm执行jar:

java -jar data-self-service-assembly-0.1.jar
spark2-submit --master yarn --name self-service data-self-service-assembly-0.1.jar
在做了一些事情之后,我在日志中发现了以下错误:

[Ljava.lang.StackTraceElement;@7435a578.
No FileSystem for scheme: hdfs
[Ljava.lang.StackTraceElement;@290c266c.
No suitable driver
从spark submit执行jar:

java -jar data-self-service-assembly-0.1.jar
spark2-submit --master yarn --name self-service data-self-service-assembly-0.1.jar
在做了一些事情之后,我在日志中发现了以下错误:

[Ljava.lang.StackTraceElement;@7435a578.
No FileSystem for scheme: hdfs
[Ljava.lang.StackTraceElement;@290c266c.
No suitable driver
我的想法快用完了,所以任何能帮助我解决问题的人都会非常感激

谢谢。

试试看

一,。检查代码中是否有以下代码段

.setMaster("local[2]")
你可以把它去掉

二,。检查spark配置的路径

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

最后,我能够通过以下方式解决问题:

  • 我使用以下url访问了spark历史服务器:
  • 我获取了执行日志以获取更多信息
  • 我看到spark使用的类路径是这样的:
    classpath“,”/opt/cloudera/parcels/SPARK2-2.2.0.cloudera2-1.cdh5.12.0.p0.232957/lib/SPARK2/jars/
  • 因此,我在该路径中复制了jdbc的jar文件
  • 然后我用以下命令提交了作业:
    spark2 submit--master warn--name-self-service-data-self-service-assembly-0.1.jar
问题是,我没有想到必须执行这些操作,因为我认为sbt将能够组装所有需要的JAR,并在以后识别它们的位置,但这里spark2 submit使用的类路径和sbt assembly之间存在一些冲突


希望有帮助。

这可能会有所帮助。谢谢@Sandeep Das的评论。我已经尝试了你的两个建议,但都没有效果:u(没有效果。一个胖优步应该拥有你所说的一切,我的意思是胖优步罐)