Apache nifi Nifi executesql连接到hana在创建avro架构时失败

Apache nifi Nifi executesql连接到hana在创建avro架构时失败,apache-nifi,Apache Nifi,查看代码时,在需要为avro架构转换的未定义数据类型上引发错误。然而,我选择的唯一一列是代码中的NVARCHAR(5000)类型 2017-04-21 01:33:51446警告[Timer Driven Process Thread-1]o.a.n.c.t.ContinuallyRunProcessorTask java.lang.IllegalArgumentException:createSchema:未知SQL类型2011无法转换为Avro类型 在org.apache.nifi.proc

查看代码时,在需要为avro架构转换的未定义数据类型上引发错误。然而,我选择的唯一一列是代码中的NVARCHAR(5000)类型

2017-04-21 01:33:51446警告[Timer Driven Process Thread-1]o.a.n.c.t.ContinuallyRunProcessorTask java.lang.IllegalArgumentException:createSchema:未知SQL类型2011无法转换为Avro类型 在org.apache.nifi.processors.standard.util.jdbccomon.createSchema(jdbccomon.java:349)~[na:na] 在org.apache.nifi.processors.standard.util.jdbccomon.convertToAvroStream(jdbccomon.java:92)~[na:na] 在org.apache.nifi.processors.standard.util.jdbccomon.convertToAvroStream(jdbccomon.java:87)~[na:na] 在org.apache.nifi.processors.standard.util.jdbccomon.convertToAvroStream(jdbccomon.java:77)~[na:na] 在org.apache.nifi.processors.standard.ExecuteSQL$2.process(ExecuteSQL.java:205)~[na:na] 在org.apache.nifi.controller.repository.StandardProcessSession.write(StandardProcessSession.java:2329)~[nifi-framework-core-1.1.2.jar:1.1.2] 在org.apache.nifi.processors.standard.ExecuteSQL.onTrigger(ExecuteSQL.java:199)~[na:na] 在org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)~[nifi-api-1.1.2.jar:1.1.2] 在org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1099)~[nifi-framework-core-1.1.2.jar:1.1.2] 在org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:136)[nifi-framework-core-1.1.2.jar:1.1.2] 在org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47)[nifi-framework-core-1.1.2.jar:1.1.2] 位于org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:132)[nifi-framework-core-1.1.2.jar:1.1.2] 在java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[na:1.8.0\u 102] 在java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)[na:1.8.0\u 102] 在java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)[na:1.8.0102] 在java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)[na:1.8.0102] 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[na:1.8.0102] 在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[na:1.8.0_102]
在JDK8的jdbcapi中的java.lang.Thread.run(Thread.java:745)[na:1.8.0_102]

,NCLOB是2011,NVARCHAR是-9:

public static final int NCLOB = 2011;
public static final int NVARCHAR = -9;
看起来您正在使用的驱动程序正在为该专栏返回2011,尽管您认为该专栏是NVARCHAR。我不完全确定,但这似乎是hana驱动程序的错误行为

通过在JdbcCommon中的case语句中添加NCLOB,可能可以在NiFi方面处理它:

 case CHAR:
 case LONGNVARCHAR:
 case LONGVARCHAR:
 case NCHAR:
 case NVARCHAR:
 case VARCHAR:
 case CLOB:

谢谢你,布莱恩。让我检查一下为什么它返回CLOB,而col定义为nvarchar。我还将尝试添加案例并加速构建。