web-dev-qa-db-fra.com

spark soumettre ajouter plusieurs fichiers jar dans classpath

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-cdh​5.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.

27
Avinash Nishanth S

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é.

Solution

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.

3
Ayush Vatsyayan

Utilisez simplement le paramètre --jars. Spark partagera ces pots (séparés par des virgules) avec les exécuteurs.

26
pzecevic

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
23
user3688187

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/*
12
Claudio Cavalcante

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

1
Binita Bharati

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
0
AB9KT

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

0
user2720864