2016-10-27 29 views
5

Chciałem przekonwertować ciąg znaków JSON na instrukcję SQL za pomocą procesora ConvertJSONtoSQL. przykład: JSON ciąg - strukturaApache NiFi: Konwertuj JSONtoSQL (baza danych Oracle)

{"cpuwait":"0.0","servernamee":"mywindows","cpusys":"5.3","cpuidle":"77.6","datee":"29-SEP-2016","timee":"00:01:33","cpucpuno":"CPU01","cpuuser":"17.1"} 

tabeli w Oracle DB -

CREATE TABLE cpu (
    datee varchar2(15) DEFAULT NULL, 
    timee varchar2(10) DEFAULT NULL, 
    servernamee varchar2(20) DEFAULT NULL, 
    cpucpuno varchar2(4) DEFAULT NULL, 
    cpuuser varchar2(5) DEFAULT NULL, 
    cpusys varchar2(5) DEFAULT NULL, 
    cpuwait varchar2(5) DEFAULT NULL, 
    cpuidle varchar2(5) DEFAULT NULL 
); 

Konfiguracja wykorzystywane do bazy danych MySQL:

Database połączenie URL: jdbc: mysql: // localhost: 3306/testnifi

Database Driver classname: com.mysql.jdbc.Driver

Udało mi się połączyć z MySQL przy użyciu (pula połączeń DBCP) adresu URL JDBC, nazwy użytkownika i hasła. Procesor ConvertJSONtoSQL pomyślnie tam pracował i otrzymuję poprawne polecenie wstawienia sql jako wyjście. Ale kiedy próbował to samo z Oracle Database dostaję

ERROR [Prog-Driven Process wątku-6] oanpstandard.ConvertJSONToSQL java.sql.SQLException: Stream został już zamknięty

Moja konfiguracja połączenia Oracle dB:

ConvertJSONtoSQL processor config

DBCP config

Szukałem błędu w google, ale stwierdziłem, że ten błąd wystąpi, gdy w tabelach bazy danych użyto długich typów danych, ale ich nie używam. Przeszedłem przez kod źródłowy procesora ConvertJSONtoSQL (po ślad stosu) i próbowałem zaimplementować to samo w eclipse, gdzie nie dostaję żadnego błędu, mogę połączyć się z bazą danych i tworzyć zapytania.

Czy jest jakiś błąd w mojej konfiguracji?

Nifi wersja - 0.7.0/1.0 (Dostaję ten sam błąd w obu) wersję

java - java8

wersja

Oracle DB - Oracle Database 11g Express Edition

Kompletna Ślad stosu :

2016-10-19 07: 10: 06557 błędów [timer regulowanego procesu gwintowania 6] oanpstandard.ConvertJSONToSQL java.sql.SQLException: strumień został już szczelne osed w oracle.jdbc.driver.LongAccessor.getBytesInternal (LongAccessor.java:156) ~ [ojdbc6.jar: 11.2.0.1.0] w oracle.jdbc.driver.LongAccessor.getBytes (LongAccessor.java:126) ~ [ojdbc6.jar: 11.2.0.1.0] na oracle.jdbc.driver.LongAccessor.getString (LongAccessor.java:201) ~ [ojdbc6.jar: 11.2.0.1.0] na oracle.jdbc.driver.T4CLongAccessor .getString (T4CLongAccessor.java:427) ~ [ojdbc6.jar: 11.2.0.1.0] na oracle.jdbc.driver.OracleResultSetImpl.getString (OracleResultSetImpl.java:1251) ~ [ojdbc6.jar: 11.2.0.1.0 ] na oracle.jdbc.driver.OracleResultSet.getString (OracleResultSet.java:494) ~ [ojdbc6.jar: 11.2.0.1.0] at org.apache.commons.dbcp.DelegatingResultSet.GetString (DelegatingResultSet.java:263) ~ [nd nd] na org.apache.nifi.processors.standard.ConvertJSONToSQL $ ColumnDescription.from (ConvertJSONToSQL.java:677) ~ [Save-Standard-0.7.0-procesorów. jar: 0.7.0] na org.apache.nifi.processors.standard.ConvertJSONToSQL $ TableSchema.from (ConvertJSONToSQL.java:621) ~ [Save-Standard-procesory 0.7.0.jar: 0.7.0] przy org.apache.nifi.processors.standard.ConvertJSONToSQL.onTrigger (ConvertJSONToSQL.java:267) ~ [składowania standardowe procesory-0.7.0.jar: 0.7.0] w org.apache.nifi.processor.AbstractProcessor. onTrigger (AbstractProcessor.java:27) [API składowania 0.7.0.jar: 0.7.0] w org.apache.nifi.controller.StandardProcessorNode.onTrigger (StandardProcessorNode.java:1054) [składowania Framework wkładka skutecznie 0.7.0.jar: 0.7.0] w org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call (ContinuallyRunP rocessorTask.java:136) [składowania ramowej-core-0.7.0.jar: 0.7.0] w org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call (ContinuallyRunProcessorTask.java:47) [składowania framework- rdzeń-0.7.0.jar: 0.7.0] na org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent $ 1.run (TimerDrivenSchedulingAgent.java:127) [save-framework-core-0.7.0.jar: 0.7. 0] na java.util.concurrent.Executors $ RunnableAdapter.call (Unknown Source) [na 1.7.0_40] na java.util.concurrent.FutureTask.runAndReset (Unknown Source)] [na 1.7.0_40 w java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 301 (Unknown Source) [na 1.7.0_40] na java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run (Unknown Source) [na 1.7.0_40] w Javie .util.concurrent.ThreadPoolExecuto r.runWorker (Unknown Source) [na 1.7.0_40] na java.util.concurrent.ThreadPoolExecutor $ Worker.run (Unknown Source) [Na 1.7.0_40] na java.lang.Thread.run (nieznanego źródła) [na 1.7.0_40

+0

Podaj procesora obieg –

Odpowiedz