NiFi соединение с SqlServor для ExecuteSQL - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь импортировать некоторые данные из разных баз данных SqlServer, используя ExecuteSQL в NiFi, но он возвращает мне ошибку.Я уже импортировал множество других таблиц из баз данных MySQL без каких-либо проблем, и я пытаюсь использовать ту же структуру рабочего процесса для базы данных SqlServer.

Структура выглядит следующим образом:

  • Имеется файл .txt со списком импортируемых таблиц
  • Этот файл извлекается, разбивается и обновляется;так что есть FlowFile для каждой таблицы каждой базы данных, которая должна быть импортирована,
  • Эти FlowFiles передаются в ExecuteSQL, который выполняет их содержимое

Например:

file.txt

table1
table2
table3

обновляется в 3 различных файлах потока:

FlowFile1
SELECT * FROM table1

FlowFile2
SELECT * FROM table2

FlowFile3
SELECT * FROM table3

, которые передаются в ExecuteSQL,

Здесь следует конфигурация ExecuteSQL (идентичная для таблиц SqlServer и MySQL)

ExecuteSQL


Как единственная разница с импортомиз базы данных MySQL находится в соединителях, вот как был настроен общий соединитель MySQL:

SETTINGSPROPERTIES

URL-адрес подключения к базе данных jdbc:mysql://00.00.00.00/DataBase?zeroDateTimeBehavior=convertToNull&autoReconnect=true
Имя класса драйвера базы данных com.mysql.jdbc.Driver
Расположение драйверов базы данных file:///path/mysql-connector-java-5.1.47-bin.jar
Пользователь базы данных user
Чувствительный к паролю value set
Макс. Время ожидания 500 millis
Макс. Всего подключений 8
Проверкаquery No value set

Вот как был настроен соединитель SqlServer:

SETTINGSPROPERTIES

URL-адрес подключения к базе данных jdbc:jtds:sqlserver://00.00.00.00/DataBase;useNTLMv2=true;integratedSecurity=true;
База данныхИмя класса драйвера net.sourceforge.jtds.jdbc.Driver
Расположение драйверов базы данных /path/connectors/jtds-1.3.1.jar
Пользователь базы данных user
Чувствительный к паролю value set
Максимальное время ожидания -1
Максимальное общее количество подключений 8
Запрос на проверку No value set


Следует отметить, что один (только один!) Коннектор SqlServer работает, и процессор ExecuteSQL без проблем импортирует данные.Еще более странно то, что база данных, которая подключается через этот соединитель, находится там же, где и другие две (URL-адрес подключения и user / psw идентичны), но работает только первая.

Обратите внимание, что я пытался добавить ?zeroDateTimeBehavior=convertToNull&autoReconnect=true также к соединениям SqlServer, предположив, что это проблема типа даты, но она не дала никаких положительных изменений.


Вот возвращаемая ошибка:

12: 02: 46 ОШИБКА CEST f1553b83-a173-1c0f-93cb-1c32f0f46d1d 00.00.00.00:0000 ExecuteSQL [id = ****] ExecuteSQL [id = ****] не удалось обработать сессию из-за нуля;Процессор административно выдан в течение 1 секунды: java.lang.AbstractMethodError


Ошибка извлечена из журналов:

ОШИБКА [Управляемый по таймеру поток процессов-49] oanifi.processors.standard.ExecuteSQL ExecuteSQL [id = ****] ExecuteSQL [id = ****] не удалось обработать сеанс из-за java.lang.AbstractMethodError;Процессор административно сдан в течение 1 секунды: java.lang.AbstractMethodError java.lang.AbstractMethodError: null в net.sourceforge.jtds.jdbc.JtdsConnection.isValid (JtdsConnection.java:2833) в org.apachenee.dd.(DelegatingConnection.java:874) на org.apache.commons.dbcp2.PoolableConnection.validate (PoolableConnection.java:270) на org.apache.commons.dbcp2.PoolableConnectionFactory.validateConnection (PoolableConnectionFactory.jache.9).commons.dbcp2.BasicDataSource.validateConnectionFactory (BasicDataSource.java:2398) в org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory (BasicDataSource.java:2381)в org.apache.commons.dbcp2.BasicDataSource.createDataSource (BasicDataSource.java:2110) на org.apache.commons.dbcp2.BasicDataSource.getConnection (BasicDataSource.java:1563) в org.apache.nifi.dbcp.DBCPConnectionPool.getConnection (DBCPConnectionPool.java:305) в org.apache.nifi.dbcp.DBCPService.getConnection (DBCPService.java:49) at sun.reflect.GeneratedMethodAccessor1696.invoke (неизвестный источник) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke (StandardControllerServiceInvocationHandler.java:84) на com.sun.proxy. $ Proxy449.getConnection (неизвестный источник) в org.apache.nifi.processors.standard.AbstractExecuteSQL.onTrigger (AbstractExecuteSQL.java:195) в org.apache.nifi.processor.AbstractProcessor.onTrigger (AbstractProcessor.java:27) в org.apache.nifi.controller.StandardProcessorNode.onTrigger (StandardProcessorNode.java:1165) в org.apache.nifi.controller.tasks.ConnectableTask.invoke (ConnectableTask.java:203) в org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent $ 1.run (TimerDrivenSchedulingAgent.java:117) в java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511) в java.util.concurrent.FutureTask.runAndReset (FutureTask.java:308) в java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 301 (ScheduledThreadPoolExecutor.java:180) в java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run (ScheduledThreadPoolExecutor.java:294) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) at java.lang.Thread.run (Thread.java:748)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...