apache-spark - spark-submit 不适用于我位于 hdfs 中的 jar
问题描述
这是我的情况:
阿帕奇火花版本 2.4.4
Hadoop 版本 2.7.4
我的应用程序 jar 位于 hdfs 中。
我的火花提交看起来像这样:
/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-submit --master yarn --deploy-mode cluster --queue default --files "你的属性文件的完整路径" --driver-memory 4G --num-executors 8 --executor-cores 1 --executor- memory 4G --class "main class name"
"你转移到本地 unix id 的 jar 的完整路径"
如果需要,您可以使用其他 spark 提交配置参数。请注意,在某些版本中,如果涉及多个 spark 版本,则必须使用 spark2-submit 而不是 spark-submit。
推荐阅读
- r - How to use package TTR’s SMA function with weights?
- python - 在循环中写入多个文件会给出相同的文件
- database - 是否可以从 PostgreSQL 中的另一个模式访问一个模式的序列?如果是,那么如何?
- java - 如何使用 Espresso 访问 RecyclerView ViewHolder?
- mysql - 提取两个变量并用 sed 重写多行
- bash - Bash脚本以某种方式调用我目录中的文件
- python - 任何人都可以在这个 python 代码中帮助我找到 Cube
- accessibility - 在屏幕阅读器中隐藏 Aria-live(礼貌)中 div 中的内容更改
- java - 在 JUnit 5 中参数化 beforeEach/beforeAll
- python - Flask 的“app.logger”的 Pylint 误报:E1101:方法“记录器”没有“调试”成员(无成员)