Почему запрос к базе данных Oracle (тип данных Long в столбце Oracle таблицы базы данных) не выполняется в QueryDatabaseTable Apache Nifi? - PullRequest
0 голосов
/ 14 января 2020

У меня есть база данных Oracle с настройкой столбца в качестве типа данных long. Столбец содержит данные XML. Я пытаюсь перенести данные из Oracle в Bigquery.

Я попробовал следующую настройку, и она отлично работала:

ExecuteSQL -> AvroToJson ->PutBigQueryBatch

Однако, когда я попытался выполнить инкрементальную загрузку с помощью после установки он выдал ошибку:

QueryDatabaseTable -> AvroToJson ->PutBigQueryBatch

Я попытался разобраться в проблеме и нашел запрос поддержки Github , который разрешен. Это ошибка или есть ошибка?

Ошибка:

2020-01-14 19:24:56,184 ERROR [Timer-Driven Process Thread-41] o.a.n.p.standard.QueryDatabaseTable QueryDatabaseTable[id=016f11ea-e0e7-1523-fbf7-428dad259c96] Unable to execute SQL select query SELECT * FROM (select * from table) table due to org.apache.nifi.processor.exception.ProcessException: Error during database query or conversion of records.: org.apache.nifi.processor.exception.ProcessException: Error during database query or conversion of records.
org.apache.nifi.processor.exception.ProcessException: Error during database query or conversion of records.
    at org.apache.nifi.processors.standard.AbstractQueryDatabaseTable.lambda$onTrigger$0(AbstractQueryDatabaseTable.java:295)
    at org.apache.nifi.controller.repository.StandardProcessSession.write(StandardProcessSession.java:2730)
    at org.apache.nifi.processors.standard.AbstractQueryDatabaseTable.onTrigger(AbstractQueryDatabaseTable.java:291)
    at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1176)
    at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:213)
    at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
    at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.nifi.processor.exception.ProcessException: java.sql.SQLException: Stream has already been closed
    at org.apache.nifi.processors.standard.sql.DefaultAvroSqlWriter.writeResultSet(DefaultAvroSqlWriter.java:51)
    at org.apache.nifi.processors.standard.AbstractQueryDatabaseTable.lambda$onTrigger$0(AbstractQueryDatabaseTable.java:293)
    ... 13 common frames omitted
Caused by: java.sql.SQLException: Stream has already been closed
    at oracle.jdbc.driver.LongAccessor.getBytesInternal(LongAccessor.java:156)
    at oracle.jdbc.driver.LongAccessor.getBytes(LongAccessor.java:126)
    at oracle.jdbc.driver.LongAccessor.getString(LongAccessor.java:201)
    at oracle.jdbc.driver.T4CLongAccessor.getString(T4CLongAccessor.java:450)
    at oracle.jdbc.driver.CharCommonAccessor.getObject(CharCommonAccessor.java:788)
    at oracle.jdbc.driver.OracleResultSetImpl.getObject(OracleResultSetImpl.java:1026)
    at org.apache.commons.dbcp2.DelegatingResultSet.getObject(DelegatingResultSet.java:733)
    at org.apache.commons.dbcp2.DelegatingResultSet.getObject(DelegatingResultSet.java:733)
    at org.apache.nifi.util.db.JdbcCommon.convertToAvroStream(JdbcCommon.java:337)
    at org.apache.nifi.processors.standard.sql.DefaultAvroSqlWriter.writeResultSet(DefaultAvroSqlWriter.java:49)
    ... 14 common frames omitted

Я пытался установить Normalise Table/ Column Names вместе с Avro Logical Type на True и False в Во всех четырех комбинациях он все равно выкинул ошибку. Есть какое-нибудь известное исправление для этого?

...