У меня следующие требования: мы читаем из реляционной базы данных с CDC вставкой / обновлением в определенную таблицу и импортируем их как события в тему Kafka.
например jdbc-источник-тема
|---------------------|------------------|------------------|
| Timestamp | ID | Column |
|---------------------|------------------|------------------|
| 10:00 | 1 | A |
|---------------------|------------------|------------------|
| 10:01 | 2 | B |
|---------------------|------------------|------------------|
| 10:01 | 1 | C |
|---------------------|------------------|------------------|
В конце конвейера мы хотели бы использовать эти события один раз в день и избежать дублирования для одного и того же идентификатора.
например целевая тема
|---------------------|------------------|------------------|
| Timestamp | ID | Column |
|---------------------|------------------|------------------|
| 10:01 | 2 | B |
|---------------------|------------------|------------------|
| 10:01 | 1 | C |
|---------------------|------------------|------------------|
На мой взгляд, лучшее решение - иметь потребителя с group_id (чтобы смещение сохранялось в kafka на следующий день), который запускался бы один раз. Но это означает, что каждый раз, когда потребитель запускается, он должен отбрасывать дубликаты из выбранных записей.
Учитывая, что эта таблица может использоваться также для KSQL Joins в будущем, мне интересно, существует ли лучший подход с использованием запросов KSQL, чтобы потребитель мог извлекать из очищенной темы с одной записью для каждого ключа.