avro中的字节格式

问题描述 投票:0回答:2

在使用汇编5.0.0将Oracle表加载到Kafka时,如何停止将数字转换为字节格式。转换为字节会在重用代理中的数据时产生许多问题。有没有办法直接将vertica db中的字节格式转换为十进制?

更多细节:每当我从oracle向Kafa发送一个表时,数字类型转换为字节,日期转换为long。当我使用KafkaSource和KafkaAvroParser将数据加载到vertica时,数据不会被解码回来。

有没有办法可以在汇编5.0.0中的schema-registry中编辑模式格式

细节:

卷曲-X GET http://localhost:8081/subjects/test-oracle-jdbc-EMP1-value/versions/1

{ “受试者”: “测试Oracle的JDBC-EMP1-值”, “版本”:1, “ID”:2 “模式”: “{\” 类型\ “:\” 记录\ “\” 名称\ “:\” EMP1 \ “\ ”字段\“:[{\ ”名称\“:\ ”EMPNO \“ \ ”类型\“:{\ ”类型\“:\ ”字节\“,\”规模\ “:0,\” 精密\ “:64,\” connect.version \ “:1,\” connect.parameters \ “:{\” 刻度\ “:\” 0 \ “},\” 连接。名\ “:\” org.apache.kafka.connect.data.Decimal \ “\ ”logicalType \“:\ ”小数\“}},{\ ”名称\“:\ ”ENAME \“,\” 型\ “:[\” 空\ “\ ”串\“],\ ”默认\“:空},{\ ”名称\“:\ ”JOB \“ \ ”类型\“:[\” 空\ ” \ “字符串\”],\ “默认\”:空},{\ “名称\”:\ “MGR \” \ “类型\”:[\ “空\”,{\ “类型\” :\ “字节\”,\ “刻度\”:0,\ “精密\”:64,\ “connect.version \”:1,\ “connect.parameters \”:{\ “刻度\”:\” 0 \ “},\” connect.name \ “:\” org.apache.kafka.connect.data.Decimal \”,\ “logicalType \”:\ “小数\”}],\ “默认\”:空},{\ “名称\”:\ “HIREDATE \” \ “类型\”:[\ “空\”,{\ “类型\”:\ “长\”,\ “connect.version \”:1 ,\ “connect.name \”:\ “org.apache.kafka.connect.data.Timestamp \”,\ “logicalType \”:\ “时间戳-millis的\”}],\ “默认\”:空}, {\ “名称\”:\ “SAL \” \ “类型\”:[\ “空\”,{\ “类型\”:\ “字节\” ,\ “刻度\”:2,\ “精密\”:64,\ “connect.version \”:1,\ “connect.parameters \”:{\ “刻度\”:\ “2 \”},\ “connect.name \”:\ “org.apache.kafka.connect.data.Decimal \”,\ “logicalType \”:\ “十进制\”}],\ “默认\”:空},{\“名称\ “:\” COMM \” \ “类型\”:[\ “空\”,{\ “类型\”:\ “字节\”,\ “刻度\”:2,\ “精密\”:64 ,\ “connect.version \”:1,\ “connect.parameters \”:{\ “刻度\”:\ “2 \”},\ “connect.name \”:\“org.apache.kafka.connect .data.Decimal \”,\ “logicalType \”:\ “小数\”}],\ “默认\”:空},{\ “名称\”:\ “DEPTNO \” \ “类型\”:[ \ “空\”,{\ “类型\”:\ “字节\”,\ “刻度\”:0,\ “精密\”:64,\ “connect.version \”:1,\“connect.parameters \ “:{\” 刻度\ “:\” 0 \ “},\” connect.name \ “:\” org.apache.kafka.connect.data.Decimal \ “\ ”logicalType \“:\” 小数\ “}],\” 默认\ “:空}],\” connect.name \ “:\” EMP1 \ “}”

oracle11g apache-kafka avro confluent confluent-schema-registry
2个回答
1
投票

假设您正在使用JDBC源连接器,则可以进行设置

"numeric.mapping":"best_fit"

在您的连接器配置中。

有关详细信息,请参阅docsthis blog


0
投票

罗宾对数字映射是正确的。至于显示的日期,这是一个以毫秒为单位的时间戳。要将该值转换为Vertica TIMESTAMP,请将数字除以1,000,然后将其转换为时间戳。

要使用HIREDATE作为示例,您将执行以下操作:

SELECT TO_TIMESTAMP(HIREDATE / 1000) ...
© www.soinside.com 2019 - 2024. All rights reserved.