apache-spark - 如何在 spark-submit 中排除包?

标签 apache-spark

我有一个基于 Spark 的流应用程序,我使用命令行中的 spark-submit 命令在 AWS EMR 上运行它。我通过使用 spark-submit 的 --packages 选项包含了一些依赖项。但是,我还想在 spark-submit 解析依赖项时排除一个依赖项。为此,我尝试使用 spark-submit 的 --exclude-packages 选项,但遇到了问题。我在实际应用程序中看到的错误与以下命令产生的错误相同(也在 AWS EMR 上运行):

spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 1024m --executor-memory 1024m --executor-cores 1 --num-executors 1  --packages org.apache.spark:spark-streaming-kafka-0-10_2.11:2.3.2,org.apache.spark:spark-streaming-kinesis-asl_2.11:2.3.2 --exclude-packages com.amazonaws:amazon-kinesis-client:1.7.3  /usr/lib/spark/examples/jars/spark-examples_2.11-2.3.2.jar 10

我看到的错误如下:

Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: Provided Maven Coordinates must be in the form 'groupId:artifactId:version'. The coordinate provided is: com.amazonaws:amazon-kinesis-client:1.7.3:*
    at scala.Predef$.require(Predef.scala:224)
    at org.apache.spark.deploy.SparkSubmitUtils$$anonfun$extractMavenCoordinates$1.apply(SparkSubmit.scala:1015)
    at org.apache.spark.deploy.SparkSubmitUtils$$anonfun$extractMavenCoordinates$1.apply(SparkSubmit.scala:1013)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
    at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
    at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:186)
    at org.apache.spark.deploy.SparkSubmitUtils$.extractMavenCoordinates(SparkSubmit.scala:1013)
    at org.apache.spark.deploy.SparkSubmitUtils$.createExclusion(SparkSubmit.scala:1324)
    at org.apache.spark.deploy.SparkSubmitUtils$$anonfun$resolveMavenCoordinates$1.apply(SparkSubmit.scala:1298)
    at org.apache.spark.deploy.SparkSubmitUtils$$anonfun$resolveMavenCoordinates$1.apply(SparkSubmit.scala:1297)
    at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:35)
    at org.apache.spark.deploy.SparkSubmitUtils$.resolveMavenCoordinates(SparkSubmit.scala:1297)
    at org.apache.spark.deploy.DependencyUtils$.resolveMavenDependencies(DependencyUtils.scala:53)
    at org.apache.spark.deploy.SparkSubmit$.doPrepareSubmitEnvironment(SparkSubmit.scala:364)
    at org.apache.spark.deploy.SparkSubmit$.prepareSubmitEnvironment(SparkSubmit.scala:250)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:171)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:137)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

我确实认为我正确地为 amazon-kinesis-client 提供了 Maven 坐标,因为首先,它对我来说看起来是正确的,其次,如果我从我的命令中删除 --exclude-packages 并添加 amazon- 的 Maven 坐标kinesis-client 因为它是 --packages 选项,命令运行良好,请参阅下面运行良好的命令:

spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 1024m --executor-memory 1024m --executor-cores 1 --num-executors 1  --packages org.apache.spark:spark-streaming-kafka-0-10_2.11:2.3.2,org.apache.spark:spark-streaming-kinesis-asl_2.11:2.3.2,com.amazonaws:amazon-kinesis-client:1.7.3 /usr/lib/spark/examples/jars/spark-examples_2.11-2.3.2.jar 10

所以我不确定在使用 --exclude-packages 选项时我做错了什么。这可能是 spark-submit 中的错误吗?以前有人遇到过这个问题吗?

附言我确实在 JIRA for Spark 项目中搜索了与上述问题相关的任何未解决/已解决问题,但一无所获。

最佳答案

使用 --exclude-packages com.amazonaws:amazon-kinesis-client 没有定义版本。

关于apache-spark - 如何在 spark-submit 中排除包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55622837/

相关文章:

maven - JanusGraph 与 Spark

python - 在 pyspark 中计算 Spark 数据帧组的并行化

scala - spark中 "grouped"的替代

apache-spark - Spark saveAsTable 的位置位于 s3 存储桶的根本原因 NullPointerException

regex - 从 Spark 数据框中的字符串列中提取单词

scala - Spark 应用程序conf中的setMaster与sparkSubmit上的--master标志之间的差异或冲突

mysql - 在spark sql中转换两个数据帧

python - pyspark : how to count by group when the data is highly skewed?

scala - 从 `org.apache.spark.sql.Row` 中提取信息

python - 将列表项转换为定义的数据类型 RDD