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