tgz spark notebook instalar python apache-spark py4j

python - notebook - Cómo agregar tarros java de terceros para usar en pyspark



spark 2.3 0 bin hadoop2 7 tgz (6)

  1. Extrae el archivo jar descargado.
  2. Editar variable de entorno del sistema
    • Agregue una variable llamada SPARK_CLASSPATH y establezca su valor en / ruta / a / el / extraído / jar / archivo.

Por ejemplo: ha extraído el archivo jar en la unidad C en la carpeta llamada sparkts, su valor debería ser: C: / sparkts

  1. Reinicia tu cluster

Tengo algunas bibliotecas de clientes de bases de datos de terceros en Java. Quiero acceder a ellos a través de

java_gateway.py

Por ejemplo: para que la clase de cliente (¡no un controlador jdbc!) Esté disponible para el cliente de Python a través de la puerta de enlace java:

java_import(gateway.jvm, "org.mydatabase.MyDBClient")

No está claro dónde agregar las bibliotecas de terceros a la ruta de clase jvm. Intenté agregar a compute-classpath.sh pero eso no parece funcionar: me sale

Py4jError: Trying to call a package

Además, al comparar con Hive: los archivos jar de Hive NO se cargan a través de compute-classpath.sh, por lo que eso me hace sospechar. Parece que se está produciendo algún otro mecanismo para configurar la ruta de clase jvm side.


Podría agregar --jars xxx.jar cuando use spark-submit

./bin/spark-submit --jars xxx.jar your_spark_script.py

o establecer la variable de entorno SPARK_CLASSPATH

SPARK_CLASSPATH=''/path/xxx.jar:/path/xx2.jar'' your_spark_script.py

your_spark_script.py fue escrito por la API de pyspark


Puede agregar la ruta al archivo jar utilizando la configuración de Spark en Runtime.

Aquí hay un ejemplo :

conf = SparkConf().set("spark.jars", "/path-to-jar/spark-streaming-kafka-0-8-assembly_2.11-2.2.1.jar") sc = SparkContext( conf=conf)

Consulte el document para más información.


Puedes agregar jars externos como argumentos a pyspark

pyspark --jars file1.jar,file2.jar


Todas las respuestas anteriores no funcionaron para mí

Lo que tuve que hacer con pyspark fue

pyspark --py-files /path/to/jar/xxxx.jar

Para Jupyter Notebook:

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")

Enlace a la fuente donde lo encontré: https://github.com/graphframes/graphframes/issues/104


Una cosa más que puedes hacer es agregar el Jar en la carpeta de pyspark jar donde está instalado pyspark. Usualmente /python3.6/site-packages/pyspark/jars

Tenga cuidado si está utilizando un entorno virtual que el jar necesita para ir a la instalación de pyspark en el entorno virtual.

De esta manera, puede usar el jarro sin enviarlo en la línea de comandos o cargarlo en su código.