J'ai la ligne de commande suivante pour démarrer un travail de streaming spark.
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 &
Le travail ne démarre pas avec l'erreur suivante:
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)
J'ai essayé de supprimer le formatage et de revenir à une seule ligne, mais cela ne résout pas le problème. J'ai également essayé un tas de variantes: différentes versions, ajouté _2.10
à la fin de l'artefactId, etc.
Selon les documents (spark-submit --help
):
Le format des coordonnées doit être groupId: artifactId: version.
Donc, ce que j'ai doit être valide et doit faire référence à ce paquet .
Si cela aide, j'utilise Cloudera 5.4.4.
Qu'est-ce que je fais mal? Comment puis-je référencer correctement les packages hbase?
Une liste de paquets doit être séparée à l'aide de virgules sans espaces (les lignes de rupture devraient très bien fonctionner) par exemple
--packages org.Apache.spark:spark-streaming-kafka_2.10:1.3.0,\
org.Apache.hbase:hbase-common:1.0.0