J'ai des bibliothèques de clients de bases de données tierces en Java. Je veux y accéder par
Java_gateway.py
E.g: pour rendre la classe cliente (pas un pilote jdbc!) Disponible pour le client python via la passerelle Java:
Java_import(gateway.jvm, "org.mydatabase.MyDBClient")
Il est difficile de savoir où ajouter les bibliothèques tierces au chemin de classe jvm. J'ai essayé d'ajouter à compute-classpath.sh mais cela ne semblait pas fonctionner: je reçois
Py4jError: Trying to call a package
De plus, lors de la comparaison avec Hive: les fichiers jar Hive ne sont PAS chargés via compute-classpath.sh, ce qui me rend suspect. Il semble y avoir un autre mécanisme en cours pour configurer le classpath côté jvm.
Vous pouvez ajouter des jars externes comme arguments de pyspark
pyspark --jars file1.jar,file2.jar
Vous pouvez ajouter le chemin d'accès au fichier JAR à l'aide de la configuration de Spark au moment de l'exécution.
Voici un exemple :
conf = SparkConf().set("spark.jars", "/path-to-jar/spark-streaming-kafka-0-8-Assembly_2.11-2.2.1.jar")
sc = SparkContext( conf=conf)
Reportez-vous au document pour plus d'informations.
Vous pouvez ajouter --jars xxx.jar
lorsque vous utilisez spark-submit
./bin/spark-submit --jars xxx.jar your_spark_script.py
ou définir la variable d'environnement SPARK_CLASSPATH
SPARK_CLASSPATH='/path/xxx.jar:/path/xx2.jar' your_spark_script.py
your_spark_script.py
a été écrit par pyspark API
Exemple: vous avez extrait le fichier jar du lecteur C dans le dossier nommé sparkts Sa valeur doit être: C:\sparkts
Une autre chose que vous pouvez faire est d’ajouter le fichier Jar dans le dossier pyspark jar où pyspark est installé. Généralement /python3.6/site-packages/pyspark/jars
Faites attention si vous utilisez un environnement virtuel, le jar doit aller à l'installation de pyspark dans l'environnement virtuel.
De cette façon, vous pouvez utiliser le fichier jar sans l'envoyer en ligne de commande ou le charger dans votre code.