2016-07-27 1 views
0

Я пытаюсь вставить данные в sql-сервер, используя искру, используя приведенные ниже методы Jdbc.вставить данные на сервер Microsoft SQL с помощью Spark

Вариант 1:

prop.put("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") 
dataf.write.mode(org.apache.spark.sql.SaveMode.Append).jdbc(url,table_name, prop) 

Таблица уже создана. Добавляя новый data.Job Error-е изд с ниже исключением

Исключение в потоке "главный"

com.microsoft.sqlserver.jdbc.SQLServerException: CREATE TABLE разрешение отказано в базе данных

Вопрос: Why create table permission is required for appending the data?

Option2:

prop.put("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") 
org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils.saveTable(dataf, url, table_name, prop) 

Над командой работающей с искровым оболочки. когда же не используется в коде и лестницу в комплекте с зависимостями давая ниже исключением

Исключение в потоке «основной» java.sql.SQLException: Нет подходящего драйвера на java.sql.DriverManager.getDriver (DriverManager.java: 315)

Я пробовал задавать путь к классу класса и пути для исполнителя, а также - jars все еще не повезло. Включил sqljdbc4.jar в pathpath водителя и -jars. Скопирован sqljdbc4.jar всем рабочим узлам, а еще не повезло.

Любые идеи на этом?

+0

Если что-то не работает после того, как упаковка затем построить определение и подать команду было бы полезно. – zero323

+0

Я использую spark-submit и вставка в таблицу hive работает отлично. Проблема только с sql-сервером. – yoga

ответ

0

После серии поиска и тестирования я нашел ответ. Это может быть полезно для кого-то.

Вариант 1: Это из-за ошибки в искры 1.5.X. то же самое было разрешено в 1.6.x и выше. Из-за ошибки всегда пытается создать новую таблицу .

Вариант2: Это связано с тем, что имя драйвера на пути к классу задано приоритетом, чем свойства, которые мы передаем как аргумент. Обходной путь для - это создание соединения, а затем обращение к нему.

workaround if you are using spark 1.5.x or lower. 
     JdbcUtils.createConnection(url, prop) 
     JdbcUtils.saveTable() 
Смежные вопросы