Байт формат в авро - PullRequest
       11

Байт формат в авро

0 голосов
/ 04 сентября 2018

Как я могу остановить преобразование числа в формат байтов при загрузке таблицы Oracle в Kafka с использованием конфлюента 5.0.0.? Преобразование в байт создает много проблем при повторном использовании данных в брокере. Есть ли способ конвертировать байтовый формат в десятичный в vertica db напрямую?

Подробнее: Каждый раз, когда я отправляю таблицу из оракула в Кафа, числовой тип преобразуется в байт, а дата - в длинный. Когда я загружаю данные в vertica, используя KafkaSource и KafkaAvroParser, данные не декодируются обратно.

Есть ли способ отредактировать формат схемы в реестре схем в слившейся версии 5.0.0

подробности:

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

{ "субъект": "Тест-оракул JDBC-EMP1 значения", "версия": 1, "идентификатор": 2, "схема": "{\" типа \ ": \" запись \», \ "имя \": \ "EMP1 \", \ "поля \": [{\ "имя \": \ "EMPNO \", \ "типа \": {\ "типа \": \ "байт \" , \ "масштаб \": 0, \ "точность \": 64, \ "connect.version \": 1, \ "connect.parameters \": {\ "масштаб \": \ "0 \"}, \ "connect.name \": \ "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 \": \ "метка-Миллис \"}], \ "по умолчанию \": нуль}, {\ "имя \": \ "SAL \", \ "типа \": [\ "нуль \", {\ "типа \": \ "б ytes \», \ "масштаб \": 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 \"} "}

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Робин прав насчет числового отображения. Что касается даты, отображаемой в течение длительного времени, это метка времени в миллисекундах. Чтобы преобразовать это значение в Vertica TIMESTAMP, разделите число на 1000, а затем приведите его как отметку времени.

Чтобы использовать HIREDATE в качестве примера, вы должны сделать следующее:

SELECT TO_TIMESTAMP(HIREDATE / 1000) ...
0 голосов
/ 04 января 2019

Предполагая, что вы используете разъем источника JDBC, вы можете установить

"numeric.mapping":"best_fit"

в конфигурации вашего разъема.

См. документы и этот блог для получения более подробной информации.

...