Как правильно использовать опцию --exclude-packages в spark-submit? - PullRequest
1 голос
/ 11 апреля 2019

У меня есть потоковое приложение на основе Spark, которое я запускаю на 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)

Я думаю, что правильно задаю координаты Maven для amazon-kinesis-client, потому что, во-первых, он выглядит корректно для меня, а во-вторых, если я удалю --exclude-packages из моей команды и добавлю Maven координаты amazon- 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? Кто-нибудь сталкивался с этим вопросом раньше?

P.S. Я выполнил поиск в проекте JIRA для Spark на любые открытые / закрытые проблемы, связанные с вышеуказанной проблемой, но ничего не нашел.

1 Ответ

0 голосов
/ 05 июня 2019

попробуй: *:amazon-kinesis-client:*

для более глубокого понимания того, как использовать spark-submit, лучшим ресурсом является исходный код: https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala

...