у меня есть: - Hadoop - Искра JobServer - SQL DatabaseСпарк JobServer JDBC-ClassNotFound ошибка
Я создал файл, чтобы получить доступ к своей базе данных SQL из локального экземпляра Спарк JobServer. Для этого мне сначала нужно загрузить мой JDBC-драйвер с помощью этой команды: Class.forName("com.mysql.jdbc.Driver");
. Однако, когда я пытаюсь выполнить файл на Спарк JobServer, я получаю ошибку ClassNotFound:
"message": "com.mysql.jdbc.Driver",
"errorClass": "java.lang.ClassNotFoundException",
Я прочитал, что для того, чтобы загрузить драйвер JDBC, вы должны изменить некоторые конфигурации либо в application.conf файл Spark JobServer или файл server_start.sh. Я сделал это следующим образом. В server_start.sh я изменил CMD значения, которое отправляется с командой в качестве искровых представить:
cmd='$SPARK_HOME/bin/spark-submit --class $MAIN --driver-memory $JOBSERVER_MEMORY
--conf "spark.executor.extraJavaOptions=$LOGGING_OPTS spark.executor.extraClassPath = hdfs://quickstart.cloudera:8020/user/cloudera/mysql-connector-java-5.1.38-bin.jar"
--driver-java-options "$GC_OPTS $JAVA_OPTS $LOGGING_OPTS $CONFIG_OVERRIDES"
--driver-class-path "hdfs://quickstart.cloudera:8020/user/cloudera/mysql-connector-java-5.1.38-bin.jar"
--jars "hdfs://quickstart.cloudera:8020/user/cloudera/mysql-connector-java-5.1.38-bin.jar"
[email protected] $appdir/spark-job-server.jar $conffile'
Я также изменил несколько строк в application.conf файл Спарк JobServer, который используется при запуске экземпляра:
# JDBC driver, full classpath
jdbc-driver = com.mysql.jdbc.Driver
# dependent-jar-uris = ["hdfs://quickstart.cloudera:8020/user/cloudera/mysql-connector-java-5.1.38-bin.jar"]
Но ошибка, которую класс JDBC не может найти, все еще возвращается.
Уже проверены на следующие ошибки:
Error1: В случае кто-то думает, что я просто путь неверный файл (который вполне может быть случай, насколько я себя знаю), я проверил на правильный файл на HDFS с hadoop fs -ls hdfs://quickstart.cloudera:8020/user/cloudera/
и файлом был там:
-rw-r--r-- 1 cloudera cloudera 983914 2016-01-26 02:23 hdfs://quickstart.cloudera:8020/user/cloudera/mysql-connector-java-5.1.38-bin.jar
ERROR2: у меня есть необходимая зависимость загруженной в моем файле build.sbt: libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.+"
и команда импорта в моем файле-лестнице import java.sql._
.
Как я могу решить эту ошибку ClassNotFound? Есть ли хорошие альтернативы JDBC для подключения к SQL?
Спасибо большое! Кстати, я только что узнал из поддержки JobServer, что файлы HDFS не поддерживаются как зависимые-jar-uris, поэтому я думаю, что это была проблема. В заключение! –