start standalone spark cluster submit apache-spark classpath

submit - standalone - chispa enviar agregar múltiples frascos en classpath



spark submit verbose (8)

Estoy tratando de ejecutar un programa spark donde tengo varios archivos jar, si solo tuviera un jar no puedo ejecutarlo. Quiero agregar ambos archivos jar que están en la misma ubicación. He intentado lo siguiente pero muestra un error de dependencia

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

¿Cómo puedo agregar otro archivo jar que esté en el mismo directorio?

Quiero agregar /usr/lib/spark/assembly/lib/hive-serde.jar .


En Spark 2.3 solo necesita configurar la opción --jars. La ruta del archivo debe anteponerse al esquema, es decir, file:///<absolute path to the jars> Por ejemplo: file:////home/hadoop/spark/externaljsrs/* o file:////home/hadoop/spark/externaljars/abc.jar,file:////home/hadoop/spark/externaljars/def.jar


Especificar la ruta completa para todos los frascos adicionales funciona.

./bin/spark-submit --class "SparkTest" --master local[*] --jars /fullpath/first.jar,/fullpath/second.jar /fullpath/your-program.jar

O agregue frascos en conf / spark-defaults.conf agregando líneas como:

spark.driver.extraClassPath /fullpath/firs.jar:/fullpath/second.jar spark.executor.extraClassPath /fullpath/firs.jar:/fullpath/second.jar


Intenté conectarme a mysql desde el código de Python que se ejecutó usando spark-submit .

Estaba usando HDP sandbox que estaba usando Ambari. Intenté muchas opciones como --jars , --driver-class-path , etc., pero ninguna funcionó.

Solución

Copie el jar en /usr/local/miniconda/lib/python2.7/site-packages/pyspark/jars/

A partir de ahora no estoy seguro de si es una solución o un truco rápido, pero como estoy trabajando en POC, me funciona un poco.


Para la --driver-class-path puedes usar : como delímetro para pasar varios frascos. A continuación se muestra el ejemplo con el comando spark-shell pero supongo que lo mismo debería funcionar también con spark-submit

spark-submit --master local[*] --jars "/path/to/myJars/*.jar" --class <ClassName> <application_jar_name>.jar arg1 arg2

Versión Spark: 2.2.0


Para mí, la opción --jars siempre funciona, pero es demasiado detallada. Para guardar algo de escritura, puede colocar todos los archivos jar en un directorio que diga ''myJars'' y luego usar este comando para enviar:

spark-shell --driver-class-path /path/to/example.jar:/path/to/another.jar


Puede usar * para importar todos los archivos jar a una carpeta al agregar conf / spark-defaults.conf.

spark.driver.extraClassPath /fullpath/* spark.executor.extraClassPath /fullpath/*


Puede usar --jars $ (echo /Path/To/Your/Jars/*.jar | tr '''' '','') para incluir la carpeta completa de Jars. Entonces, spark-submit - class com.yourClass / --jars $ (echo /Path/To/Your/Jars/*.jar | tr '''' '','') / ...


Solo usa el parámetro --jars . Spark compartirá esos frascos (separados por comas) con los ejecutores.