Почему я вижу дубликаты в потоке KSQL? - PullRequest
1 голос
/ 21 марта 2019

Я создал поток ksql, используя create stream as select, и по какой-то причине запрос постоянного потокового потока CSAS создает 4 повторяющихся записи для каждой исходной записи.Как я могу избежать дубликатов?Что не так с моей настройкой?

Вот мои настройки:

  1. Поток из основной темы Kafka:
CREATE STREAM ORDERS ( ... ) WITH (
  KAFKA_TOPIC='orders.prod',
  VALUE_FORMAT='json'
);

Этот поток выглядитхорошо - выбор по ключу, возвращает одну запись:

SELECT * FROM ORDERS WHERE ROWKEY = 'order-123'

1553124285000 | order-123 | ... | ... | ...
Повторный поток:
CREATE STREAM ORDERS_REKEYED WITH (PARTITIONS=6, REPLICAS=2)
  AS SELECT * FROM ORDERS PARTITION BY LEGACY_ID;

Теперь, когда я запрашиваю новый поток, я вижу 4 одинаковые записи:

SELECT * FROM ORDERS_REKEYED WHERE ROWKEY = 'abc'

1553124285000 | abc | order-123 | ... | ... | ...
1553124285000 | abc | order-123 | ... | ... | ...
1553124285000 | abc | order-123 | ... | ... | ...
1553124285000 | abc | order-123 | ... | ... | ...

Это не то, что я ожидаю.Я начал смотреть на выполнение запросов с использованием show queries; и обнаружил, что каждый узел выполняет мой запрос с различным номером постфикса, например, узел 1 запускает CSAS_ORDERS_REKEYED_16, узел 2 запускает CSAS_ORDERS_REKEYED_21 ... вот полный журнал запущенных запросов по узлу:

  • узел 1: CSAS_ORDERS_REKEYED_16
  • узел 2: CSAS_ORDERS_REKEYED_21
  • узел 3: CSAS_ORDERS_REKEYED_15
  • узел 4: CSAS_ORDERS_REKEYED_21 *1016* 1016
  • узел 6: CSAS_ORDERS_REKEYED_18

Я не понимаю, почему у меня 4 запроса (16, 21, 15, 18) на 6 узлов?Может ли это быть причиной наличия 4-х одинаковых выходных записей для каждой входной записи?

Должен ли я иметь только один уникальный запрос для всех узлов?Или каждый узел должен выполнять запрос со своим собственным номером постфикса?

...