Итак, я использовал sbt со сборкой, чтобы упаковать все мои зависимости в одну банку для моих искровых заданий. У меня есть несколько заданий, на которых я использовал c3p0
для настройки информации о пуле соединений, транслировал ее, а затем использовал foreachPartition
в RDD, чтобы затем захватить соединение и вставить данные в базу данных. В моем сценарии сборки sbt я включаю
"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 в java.sql.DriverManager.getConnection (DriverManager.java:596) в java.sql. DriverManager.getConnection (DriverManager.java:233)
Когда я запускал это локально, я обошел это, установив
SPARK_CLASSPATH=/path/where/mysql-connector-is.jar
В конечном итоге я хочу знать, почему эта работа не может найти драйвер, когда он должен быть упакован вместе с ним? На других моих работах никогда не было такой проблемы. Из того, что я могу сказать, и c3p0
, и код фрейма данных используют java.sql.DriverManager
(который обрабатывает для вас импорт всего, насколько я могу судить), поэтому он должен работать нормально ?? Если есть что-то, что мешает работе метода сборки, что мне нужно сделать, чтобы это сработало?