Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 使用ApacheNIFI更新postgres表时UUID数据类型出现问题_Postgresql_Uuid_Avro_Apache Nifi - Fatal编程技术网

Postgresql 使用ApacheNIFI更新postgres表时UUID数据类型出现问题

Postgresql 使用ApacheNIFI更新postgres表时UUID数据类型出现问题,postgresql,uuid,avro,apache-nifi,Postgresql,Uuid,Avro,Apache Nifi,数据库 博士后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/uui

数据库

  • 博士后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(表:国家,列:id)无法转换为Avro类型;以管理方式在1秒内生成的处理器:java.lang.IllegalArgumentException:createSchema:未知SQL类型1111/uuid(表:国家,列:id)无法转换为Avro类型

请注意,流文件不会从传入队列中删除,也不会发送到“失败”关系,从而导致失败尝试的无休止循环

尝试解决问题

  • 我尝试启用ExecuteSQL处理器的Use Avro Logical Types属性,但出现了相同的错误
可能但不是首选的解决方案

  • 我当前从每个表中执行SELECT*。一个可能的解决方案(我认为)是指定每个列,并让查询将uuid转换为字符串。虽然这可能有效,但我强烈希望不必单独列出每一列
最后一个音符

  • 我确实找到了这张Jira票: 然而,我不知道如何解释这一点。它是否得到实施?它到底能不能工作
我认为UUID不是标准的JDBC类型,而是专为Postgres设计的

JDBC types类显示SQL类型1111是“其他”:


因此,我不确定NiFi如何知道在这里做什么,因为它可以是任何取决于DB类型的东西。

您是否尝试过创建一个视图,将列定义为::text

SELECT
    "v"."UUID_COLUMN"::text AS UUID_COLUMN
FROM
...

SELECT
    "v"."UUID_COLUMN"::text AS UUID_COLUMN
FROM
...