У меня есть база данных 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
в Во всех четырех комбинациях он все равно выкинул ошибку. Есть какое-нибудь известное исправление для этого?