Подтвердить что ты не робот

Как указать несколько зависимостей, используя --packages для spark-submit?

У меня есть следующая команда в командной строке, чтобы начать работу с искровым потоком.

    spark-submit --class com.biz.test \
            --packages \
                org.apache.spark:spark-streaming-kafka_2.10:1.3.0 \
                org.apache.hbase:hbase-common:1.0.0 \
                org.apache.hbase:hbase-client:1.0.0 \
                org.apache.hbase:hbase-server:1.0.0 \
                org.json4s:json4s-jackson:3.2.11 \
            ./test-spark_2.10-1.0.8.jar \
            >spark_log 2>&1 &

Задание не запускается со следующей ошибкой:

Exception in thread "main" java.lang.IllegalArgumentException: Given path is malformed: org.apache.hbase:hbase-common:1.0.0
    at org.apache.spark.util.Utils$.resolveURI(Utils.scala:1665)
    at org.apache.spark.deploy.SparkSubmitArguments.parse$1(SparkSubmitArguments.scala:432)
    at org.apache.spark.deploy.SparkSubmitArguments.parseOpts(SparkSubmitArguments.scala:288)
    at org.apache.spark.deploy.SparkSubmitArguments.<init>(SparkSubmitArguments.scala:87)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:105)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

Я попытался удалить форматирование и вернуться к одной строке, но это не решает проблему. Я также попробовал кучу вариантов: разные версии, добавил _2.10 до конца artifactId и т.д.

В соответствии с документами (spark-submit --help):

Формат для координат должен быть groupId: artifactId: версия.

Итак, что я должен быть действительным и должен ссылаться на этот пакет.

Если это помогает, я запускаю Cloudera 5.4.4.

Что я делаю неправильно? Как я могу правильно ссылаться на пакеты hbase?

4b9b3361

Ответ 1

Список пакетов должен быть разделен запятыми без пробелов (разрывы строк должны работать просто отлично), например

--packages  org.apache.spark:spark-streaming-kafka_2.10:1.3.0,\
  org.apache.hbase:hbase-common:1.0.0