Итак, я использовал sbt с сборкой для упаковки всех моих зависимостей в одну банку для моих искровых заданий. У меня есть несколько заданий, в которых я использовал c3p0
, чтобы настроить информацию пула соединений, транслировать это, а затем использовать foreachPartition
в RDD, чтобы затем захватить соединение и вставить данные в базу данных. В моей sbt build script я включаю
"mysql" % "mysql-connector-java" % "5.1.33"
Это гарантирует, что разъем JDBC упакован с заданием. Все отлично работает.
Так недавно я начал играть с SparkSQL и понял, что гораздо проще просто взять фрейм данных и сохранить его в источнике jdbc с новыми функциями в 1.3.0
Я получаю следующее исключение:
java.sql.SQLException: не найдено подходящего драйвера для jdbc: mysql://some.domain.com/myschema? user = user & password = password at java.sql.DriverManager.getConnection(DriverManager.java:596) в java.sql.DriverManager.getConnection(DriverManager.java:233)
Когда я запускал это локально, я обошел его, установив
SPARK_CLASSPATH=/path/where/mysql-connector-is.jar
В конечном итоге то, что я хочу знать, это то, почему работа не способна найти драйвер, когда он должен быть упакован с ним? У моей другой работы никогда не было этой проблемы. Из того, что я могу сказать как c3p0
, так и кода dataframe, оба используют java.sql.DriverManager
(который обрабатывает импорт для вас всего, что я могу сказать), поэтому он должен работать нормально? Если что-то препятствует работе метода сборки, что мне нужно сделать, чтобы сделать эту работу?