El siguiente es mi guión para iniciar mi trabajo de chispa.
#!/bin/bash APP_DIR="/home/arvind/myApp" JARS=$(echo $APP_DIR/lib/* | tr ' ' ',') /home/arvind/spark3/bin/spark-submit \ --master spark://server4:7078 \ --verbose \ --jars $JARS \ --driver-class-path $APP_DIR/conf \ --class com.test.spark.MySparkApplication \ --conf spark.driver.extraJavaOptions="-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+HeapDumpOnOutOfMemoryError -Dlog4j.configuration=file:$APP_DIR/conf/log4j.properties" \ --conf spark.driver.memory="32g" \ --conf spark.cores.max="20" \ $APP_DIR/myApp.jar > $APP_DIR/logs/output.err 2> $APP_DIR/logs/output.txt &La carpeta lib contiene todos los archivos jar, empaquetados con la aplicación, incluidas las dependencias de Postgres.
[arvind@server4 myApp]$ ls lib/postgresql-42.1.4.jar lib/postgresql-42.1.4.jarCuando ejecuto la aplicación en un clúster spark3, usando el script anterior, obtengo la siguiente excepción
265 Caused by: java.lang.ClassNotFoundException: org.postgresql.ds.PGSimpleDataSource 266 at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 267 at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 268 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 269 at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 270 at com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:77) 271 ... 25 morePero si cambio el script anterior para enviarlo a un clúster spark2.4.0, funciona bien.
Podrías ayudarme con esto por favor ?
Si agrega el jar a --driver-class-path así, debería funcionar:
#!/bin/bash APP_DIR="/home/arvind/myApp" JARS=$(echo $APP_DIR/lib/* | tr ' ' ',') COLON_SEP_JARS=$(echo $APP_DIR/lib/* | tr ' ' ':') /home/arvind/spark3/bin/spark-submit \ --master spark://server4:7078 \ --verbose \ --jars $JARS \ --driver-class-path $APP_DIR/conf:$COLON_SEP_JARS \ --class com.test.spark.MySparkApplication \ --conf spark.driver.extraJavaOptions="-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+HeapDumpOnOutOfMemoryError -Dlog4j.configuration=file:$APP_DIR/conf/log4j.properties" \ --conf spark.driver.memory="32g" \ --conf spark.cores.max="20" \ $APP_DIR/myApp.jar > $APP_DIR/logs/output.err 2> $APP_DIR/logs/output.txt &