Ответ 1
Вы можете добавить внешние банки в качестве аргументов в pyspark
pyspark --jars file1.jar,file2.jar
У меня есть некоторые сторонние клиентские библиотеки баз данных на Java. Я хочу получить к ним доступ через
java_gateway.py
Например: чтобы клиентский класс (а не драйвер jdbc!) был доступен клиенту python через java-шлюз:
java_import(gateway.jvm, "org.mydatabase.MyDBClient")
Непонятно, где добавить сторонние библиотеки в путь класса jvm. Я попытался добавить в compute-classpath.sh, но это не помогло: я получаю
Py4jError: Trying to call a package
Кроме того, при сравнении с Hive: файлы jive jar НЕ загружаются через compute-classpath.sh, поэтому это делает меня подозрительным. Кажется, существует какой-то другой механизм, который пытается создать путь класса jvm side.
Вы можете добавить внешние банки в качестве аргументов в pyspark
pyspark --jars file1.jar,file2.jar
Вы можете добавить путь к файлу JAR, используя конфигурацию Spark во время выполнения.
Вот пример:
conf = SparkConf().set("spark.jars", "/path-to-jar/spark-streaming-kafka-0-8-assembly_2.11-2.2.1.jar")
sc = SparkContext( conf=conf)
Обратитесь к документу за дополнительной информацией.
Вы можете добавить --jars xxx.jar
при использовании spark-submit
./bin/spark-submit --jars xxx.jar your_spark_script.py
или установите переменную окружения SPARK_CLASSPATH
SPARK_CLASSPATH='/path/xxx.jar:/path/xx2.jar' your_spark_script.py
your_spark_script.py
был написан pyspark API
Например: вы извлекли файл jar на диске C в папке с именем sparkts его значение должно быть: C:\sparkts
Еще одна вещь, которую вы можете сделать, это добавить Jar в папку jar pyspark, где установлен pyspark. Обычно /python3.6/site-packages/pyspark/jars
Будьте осторожны, если вы используете виртуальную среду, которая нужна jar для установки pyspark в виртуальной среде.
Таким образом, вы можете использовать JAR без отправки его в командной строке или загрузить его в свой код.
Все вышеперечисленные ответы не спомогли мне
Что я должен был сделать с Pyspark было
pyspark --py-files /path/to/jar/xxxx.jar
Для ноутбука Jupyter:
spark = (SparkSession
.builder
.appName("Spark_Test")
.master('yarn-client')
.config("spark.sql.warehouse.dir", "/user/hive/warehouse")
.config("spark.executor.cores", "4")
.config("spark.executor.instances", "2")
.config("spark.sql.shuffle.partitions","8")
.enableHiveSupport()
.getOrCreate())
# Do this
spark.sparkContext.addPyFile("/path/to/jar/xxxx.jar")
Ссылка на источник, где я его нашел: https://github.com/graphframes/graphframes/issues/104