I have a java spark job written using Spring boot. I will need to call MS SQL DB to get the prop/values before starting the spark operations. In my local, I was able to run the spark job by passing the driver class in spark extra classpth.
I have also tried to set the extraclass path using the dataproc env variable.spark.dataproc.driverEnv.SPARK_EXTRA_CLASSPATH. SPARK_EXTRA_CLASSPATH=gs://XXXX/XXXX/mssql-jdbc-12.2.0.jre11.jar I see the above path is printed in the log. But still I am getting error
Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver.
Error:
Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at com.zaxxer.hikari.HikariConfig.setDriverClassName(HikariConfig.java:318)
Code:
public DataSource getDataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
dataSourceBuilder.username(config.getSqlUser());
dataSourceBuilder.password(config.getSqlPass());
dataSourceBuilder.url(config.getSqlUrl());
return dataSourceBuilder.build();
}
Do we have any option available without creating an custom image to preappend the lib into the default container using extra classpath?