spark soumettre ajouter plusieurs pots dans le classpath
Je suis en train de lancer une étincelle programme où j'ai plusieurs fichiers jar, si j'avais un seul pot, je ne suis pas en mesure d'exécuter. Je tiens à ajouter à la fois les fichiers jar qui sont dans le même emplacement. J'ai essayé de le ci-dessous, mais il montre une erreur de dépendance
spark-submit \
--class "max" maxjar.jar Book1.csv test \
--driver-class-path /usr/lib/spark/assembly/lib/hive-common-0.13.1-cdh5.3.0.jar
Comment puis-je ajouter un autre fichier jar qui est dans le même répertoire?
Je veux ajouter /usr/lib/spark/assembly/lib/hive-serde.jar
.
- Bienvenue @avinash, pour votre prochain post, je le conseille votre choix pour avoir un coup d'oeil à stackoverflow.com/editing-help
spark-submit [restofyouroptions] --conf "spark.driver.extraClassPath=myjarfile.jar"
- plusieurs fichiers jar:
"spark.driver.extraClassPath=/path/myjarfile1.jar:/path/myjarfile2.jar"
Vous devez vous connecter pour publier un commentaire.
J'ai été d'essayer de se connecter à mysql depuis le code python qui a été exécutée à l'aide de
spark-submit
.J'ai été en utilisant HDP sandbox qui a été à l'aide de Ambari. Essayé beaucoup d'options telles que
--jars
,--driver-class-path
, etc, mais aucune n'a fonctionné.Solution
Copier le jar dans
/usr/local/miniconda/lib/python2.7/site-packages/pyspark/jars/
Comme de maintenant, je ne suis pas sûr si c'est une solution ou d'un hack, mais depuis que je suis en train de travailler sur POC et donc cela fonctionne pour moi.
Suffit d'utiliser la
--jars
paramètre. Étincelle va partager ces pots (séparées par des virgules) avec les exécuteurs testamentaires.La spécification du chemin d'accès complet pour tous les autres pots de les travaux.
Ou ajouter des pots de conf/spark-valeurs par défaut.conf en ajoutant des lignes comme:
Vous pouvez utiliser * pour importer tous les bocaux dans un dossier lors de l'ajout dans conf/spark-valeurs par défaut.conf .
Spark 2.3 vous devez simplement régler le --pots option. Le chemin d'accès au fichier doit être préfixé par le schéma si ie
file:///<absolute path to the jars>
Par exemple :
file:////home/hadoop/spark/externaljsrs/*
oufile:////home/hadoop/spark/externaljars/abc.jar,file:////home/hadoop/spark/externaljars/def.jar
Pour moi --pots option fonctionne toujours mais c'est trop verbeux. Pour économiser un peu de temps, vous pouvez mettre les bocaux dans un répertoire dire "myJars', puis utiliser cette commande pour envoyer:
spark-submit
Pour
--driver-class-path
option que vous pouvez utiliser:
comme délimiteur de passer plusieurs bocaux.Ci-dessous est l'exemple avec
spark-shell
commandement, mais je suppose que la même chose devrait travailler avecspark-submit
ainsiSpark version: 2.2.0