【发布时间】:2018-08-06 12:59:38
【问题描述】:
数据库
- Postgres 9.6
- 包含多个具有 UUID 列(包含每条记录的 ID)的表
NiFi
- 最新版本 (1.7.1)
- 使用 Avro 1.8.1(据我所知)
问题描述
使用 ExecuteSQL 处理器调度表时,出现以下错误消息:
ExecuteSQL[id=09033e32-e840-1aed-3062-6e8cbc5551ba] ExecuteSQL[id=09033e32-e840-1aed-3062-6e8cbc5551ba] 由于 createSchema 无法处理会话:未知 SQL 类型 1111 / uuid(表:国家, column: id) 无法转换为 Avro 类型;处理器在管理上产生了 1 秒:java.lang.IllegalArgumentException:createSchema:未知 SQL 类型 1111 / uuid(表:国家,列:id)无法转换为 Avro 类型
请注意,流文件不会从传入队列中删除,也不会发送到“失败”关系,从而导致失败尝试的无限循环。
尝试解决问题
- 我尝试启用 ExecuteSQL 处理器的 Use Avro Logical Types 属性,但出现了同样的错误。
可能但不是首选的解决方案
- 我目前对每个表执行 SELECT *。一个可能的解决方案(我认为)是指定每一列,并让查询将 uuid 转换为字符串。虽然这可行,但我强烈希望不必单独列出每一列。
最后一点
- 我确实找到了这张 Jira 票:https://issues.apache.org/jira/browse/AVRO-1962 但是,我不确定如何解释这一点。实施与否?它应该工作还是不工作?
【问题讨论】:
标签: postgresql uuid avro apache-nifi