IBM CD C - репликация данных для Kafka (настройка в LiveAudit) - PullRequest
0 голосов
/ 10 марта 2020

Мы используем IBM AS400 в качестве исходной таблицы. Я хотел бы сделать следующее:

  1. использовать описательный column_name (например, "цена закрытия") вместо system_column_name ("CPHKD001")
  2. преобразовать формат метки времени "2020 -03-10 18: 25: 31.123456000000 "to" 2020-03-10T18: 25: 31.123Z "

Думаю, мне следует разобраться с файлом KcopLiveAuditSingleRowIntegrated.java. Для временной метки, скорее всего, там есть решение, но я не думаю, что смогу найти там ответ.

1 Ответ

2 голосов
/ 10 марта 2020

Инфраструктура KCOP позволяет программировать c контроль над записью производителя Kafka. Для каждой операции с источником вы можете определить, сколько сообщений записывается в Kafka, какие темы они тоже go, и каковы байты ключа и значения.

В KCOP вы можете переопределить временную метку для быть любым форматом, который вам нравится с java. Это связано с тем, что каждый вызов createProducerRecords предоставляет предлагаемую запись Avro generi c, которая имеет схему, позволяющую идентифицировать таблицу, столбцы и их типы.

Согласно Avro Generi * 1046 Поведение записи, задокументированное в документации Avro с открытым исходным кодом, затем вы можете выбрать соответствующие значения, которые вас интересуют, и создать новую запись Avro generi c с преобразованными значениями. Затем передайте эту новую запись Avro Generi c на остальную часть KCOP.

Обратите внимание, что контрольные KCOP включают в себя код, который делает это, хорошим примером является KCOP Avro для однорядной проверки. Вы можете найти код для всех наших интегрированных KCOP в файле samples.jar установки вашего продукта.

Однострочный KCOP аудита Avro берет записи Avro generi c до и после и создает новую Avro Generi c запись, которая является их композицией. Если во время копирования значений вы проверяли тип столбца, вы могли бы определить временные метки и изменить значение, которое вы помещали в новую составную запись Avro generi c.

Однако мы предлагаем некоторые гибкость предварительного форматирования, согласно следующей ссылке

https://www.ibm.com/support/knowledgecenter/en/SSTRGZ_11.4.0/com.ibm.cdcdoc.mcadminguide.doc/refs/mirror_timestamp_write_format_Kafka.html

Обратите внимание, чтобы использовать этот дополнительный предварительный формат, вам необходимо: «Чтобы включить этот параметр, необходимо установить для параметра mirror_write_format значение DYNAMI C. "

Вы заметите, что можно установить параметр хранилища данных, который позволит обычно настраивать данные метки времени, которые получает ваша KCOP.

«AVRO (по умолчанию)

Форматирует значения столбца TIMESTAMP в виде числа микросекунд с UNIX эпохи, 1 января 1970 года (календарь ISO). Для целей этого расчета временные метки предполагаются равными UT C.

Для столбцов TIMESTAMP с точностью выше микросекунд значения форматируются как строки. Для получения формата строки используйте параметр хранилища данных timestamp_format. Значением по умолчанию для timestamp_format является гггг-мм-дд ЧЧ: мм: ss.SSSNNNnnnppp.

Значения столбца TIMESTAMP WITH TIMEZONE форматируются как строки. Вы можете указать формат строки, используя параметр хранилища данных timestamp_tz_format. Значением по умолчанию для timestamp_tz_format является гггг-ММ-дд ЧЧ: мм: сс.SSSNNNnnnppp T. "

Если это не дает точного желаемого формата, вы можете выбрать ближайший формат и изменить значение столбцы отметок времени в KCOP.

Изменение KCOP выполняется следующим образом ...

https://www.ibm.com/support/knowledgecenter/en/SSTRGZ_11.4.0/com.ibm.cdcdoc.mcadminguide.doc/tasks/createkafkacop.html

Вопрос относительно имени столбца заключается в То же самое. Если используемый KCOP использует реестр схемы Avro, то вы можете программно изменить схему, зарегистрированную в реестре схемы. Если это JSON, вы можете изменить строку JSON после ее создания или сделать изменение перед вызовом метода Avro для JSON.

В качестве альтернативы, если ваш источник поддерживает производные столбцы, я полагаю, что в консоли управления вы можете определить производный столбец с новым именем, которое является просто значением Исходный столбец. Теперь я помню, что вы можете отменить выбор исходного столбца, и, таким образом, ваше имя будет изменено.

...