apache-spark - spark-submit与我位于hdfs中的jar不兼容

标签 apache-spark hadoop spark-submit

这是我的情况:

Apache Spark版本2.4.4

Hadoop版本2.7.4

我的应用程序jar位于hdfs中。

我的提交 Spark 看起来像这样:

/software/spark-2.4.4-bin-hadoop2.7/bin/spark-submit \
--class com.me.MyClass --master spark://host2.local:7077 \
--deploy-mode cluster \
hdfs://host2.local:9000/apps/myapps.jar

我收到此错误:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.tracing.SpanReceiverHost.get(Lorg/apache/hadoop/conf/Configuration;Ljava/lang/String;)Lorg/apache/hadoop/tracing/SpanReceiverHost;
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:634)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:619)
    at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:149)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2598)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:91)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2632)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2614)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:370)
    at org.apache.spark.deploy.DependencyUtils$$anonfun$resolveGlobPaths$2.apply(DependencyUtils.scala:144)
    at org.apache.spark.deploy.DependencyUtils$$anonfun$resolveGlobPaths$2.apply(DependencyUtils.scala:139)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
    at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:35)
    at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
    at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
    at org.apache.spark.deploy.DependencyUtils$.resolveGlobPaths(DependencyUtils.scala:139)
    at org.apache.spark.deploy.DependencyUtils$$anonfun$resolveAndDownloadJars$1.apply(DependencyUtils.scala:61)
    at org.apache.spark.deploy.DependencyUtils$$anonfun$resolveAndDownloadJars$1.apply(DependencyUtils.scala:64)
    at scala.Option.map(Option.scala:146)
    at org.apache.spark.deploy.DependencyUtils$.resolveAndDownloadJars(DependencyUtils.scala:60)
    at org.apache.spark.deploy.worker.DriverWrapper$.setupDependencies(DriverWrapper.scala:96)
    at org.apache.spark.deploy.worker.DriverWrapper$.main(DriverWrapper.scala:60)
    at org.apache.spark.deploy.worker.DriverWrapper.main(DriverWrapper.scala)

请问如何解决这个问题?
谢谢。

最佳答案

无需将jar转移到集群中,您可以使用可执行权限从本地ID本身运行jar。
构建完应用程序后,将.jar转移到您的Unix用户帐户并为其授予可执行权限。看看下面的 Spark 提交:

spark-submit --master yarn --deploy-mode cluster --queue default
--files“属性文件的完整路径” --driver-memory 4G
--num-executors 8 --executor-cores 1 --executor-memory 4G
--class“主类别名称”
“您已转移到本地unix id的jar的完整路径”

如果需要,可以使用其他spark提交配置参数。请注意,在某些版本中,如果涉及多个Spark版本,则必须使用spark2-submit代替spark-submit。

关于apache-spark - spark-submit与我位于hdfs中的jar不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58390733/

相关文章:

apache-spark - 我的 spark sql 限制很慢

java - 决策树分类器中的问题

hadoop - Vagrant 'box could not be found' 错误

apache-spark - 部署和运行定期 Spark 作业的最佳实践

apache-spark - 仅获取所有hdfs direcorties文件

mongodb - 使用日期过滤器传递 Hadoop 作业的输入查询 (mongo.input.query)

scala - 从 spark-submit 运行应用程序时从 jar 读取输入文件

apache-spark - 从 s3 传递自定义 log4j.properties 文件

apache-spark - 以编程方式为 Apache Spark 中的数据框生成模式和数据

scala - 收到TimeoutException的可能原因是什么:使用Spark时[n秒]之后, future 超时