J'essaie de lancer un programme d'allumage dans lequel j'ai plusieurs fichiers jar. Si je n'avais qu'un seul jar, je ne pourrais pas l'exécuter. Je veux ajouter les deux fichiers JAR qui sont au même endroit. J'ai essayé 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 se trouve dans le même répertoire?
Je veux ajouter /usr/lib/spark/Assembly/lib/Hive-serde.jar
.
J'essayais de me connecter à mysql à partir du code python exécuté à l'aide de spark-submit
.
J'utilisais le bac à sable HDP qui utilisait Ambari. Essayé beaucoup d'options telles que --jars
, --driver-class-path
, etc., mais aucune n'a fonctionné.
Copiez le pot dans /usr/local/miniconda/lib/python2.7/site-packages/pyspark/jars/
Pour le moment, je ne suis pas sûr que ce soit une solution ou un piratage rapide, mais comme je travaille sur POC, cela fonctionne en quelque sorte pour moi.
Utilisez simplement le paramètre --jars
. Spark partagera ces pots (séparés par des virgules) avec les exécuteurs.
La spécification du chemin complet pour tous les travaux jars supplémentaires.
./bin/spark-submit --class "SparkTest" --master local[*] --jars /fullpath/first.jar,/fullpath/second.jar /fullpath/your-program.jar
Ou ajoutez des fichiers jars dans conf/spark-defaults.conf en ajoutant des lignes telles que:
spark.driver.extraClassPath /fullpath/firs.jar:/fullpath/second.jar
spark.executor.extraClassPath /fullpath/firs.jar:/fullpath/second.jar
Vous pouvez utiliser * pour importer tous les fichiers JAR dans un dossier lors de l'ajout de conf/spark-defaults.conf.
spark.driver.extraClassPath /fullpath/*
spark.executor.extraClassPath /fullpath/*
Dans Spark 2.3, vous devez simplement définir l'option --jars. Le chemin du fichier doit être précédé du schéma, à savoir file:///<absolute path to the jars>
Eg: file:////home/hadoop/spark/externaljsrs/*
ou file:////home/hadoop/spark/externaljars/abc.jar,file:////home/hadoop/spark/externaljars/def.jar
Pour moi, l'option --jars fonctionne toujours, mais c'est trop verbeux. Pour enregistrer un peu de frappe, vous pouvez placer tous les fichiers JAR dans un répertoire, par exemple 'myJars', puis utiliser cette commande pour soumettre:
spark-submit --master local[*] --jars "/path/to/myJars/*.jar" --class <ClassName> <application_jar_name>.jar arg1 arg2
Pour l'option --driver-class-path
, vous pouvez utiliser :
comme séparateur pour transmettre plusieurs fichiers jar . Voici l'exemple de la commande spark-Shell
, mais je suppose que cela devrait également fonctionner avec spark-submit
spark-Shell --driver-class-path /path/to/example.jar:/path/to/another.jar
Version Spark: 2.2.0