【发布时间】:2016-12-14 10:05:42
【问题描述】:
我在 CDH 5.7 上运行 Spark 1.6.0,并将我的原始应用程序从 1.4.1 升级到 1.6.0。当我尝试运行我的应用程序(以前运行良好)时,我收到以下错误:
Exception in thread "main" java.lang.IllegalArgumentException: requirement failed
at scala.Predef$.require(Predef.scala:221)
at org.apache.spark.deploy.yarn.Client$$anonfun$prepareLocalResources$6$$anonfun$apply$3.apply(Client.scala:473)
at org.apache.spark.deploy.yarn.Client$$anonfun$prepareLocalResources$6$$anonfun$apply$3.apply(Client.scala:471)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108)
at org.apache.spark.deploy.yarn.Client$$anonfun$prepareLocalResources$6.apply(Client.scala:471)
at org.apache.spark.deploy.yarn.Client$$anonfun$prepareLocalResources$6.apply(Client.scala:469)
at scala.collection.immutable.List.foreach(List.scala:318)
at org.apache.spark.deploy.yarn.Client.prepareLocalResources(Client.scala:469)
at org.apache.spark.deploy.yarn.Client.createContainerLaunchContext(Client.scala:725)
at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:143)
at org.apache.spark.deploy.yarn.Client.run(Client.scala:1023)
at org.apache.spark.deploy.yarn.Client$.main(Client.scala:1083)
at org.apache.spark.deploy.yarn.Client.main(Client.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
我提交申请:
-
--jars是一个逗号分隔的 jar 列表(带有绝对路径) -
--files是一个逗号分隔的文件列表(带有绝对路径) -
--driver-class-path是一个以冒号分隔的资源列表(没有完整路径,只有文件名)
我已经尝试使用驱动程序(和执行程序)类路径的完整路径,但这给了我同样的问题。与应用程序一起提交的所有文件和 jar 都存在,我检查了。
这可能与duplicates in the distributed cache 的问题有关还是这是另一个问题?
从源代码中,我看到唯一没有自定义消息的require 调用(如堆栈跟踪)与distribute() 方法有关。如果是这样,如何在不升级 Spark 的情况下运行应用程序?
【问题讨论】:
-
在我看来它缺少依赖项。
标签: apache-spark