Ответ 1
Список пакетов должен быть разделен запятыми без пробелов (разрывы строк должны работать просто отлично), например
--packages org.apache.spark:spark-streaming-kafka_2.10:1.3.0,\
org.apache.hbase:hbase-common:1.0.0
У меня есть следующая команда в командной строке, чтобы начать работу с искровым потоком.
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?
Список пакетов должен быть разделен запятыми без пробелов (разрывы строк должны работать просто отлично), например
--packages org.apache.spark:spark-streaming-kafka_2.10:1.3.0,\
org.apache.hbase:hbase-common:1.0.0