Я создал поток ksql, используя create stream as select
, и по какой-то причине запрос постоянного потокового потока CSAS создает 4 повторяющихся записи для каждой исходной записи.Как я могу избежать дубликатов?Что не так с моей настройкой?
Вот мои настройки:
- Поток из основной темы 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-х одинаковых выходных записей для каждой входной записи?
Должен ли я иметь только один уникальный запрос для всех узлов?Или каждый узел должен выполнять запрос со своим собственным номером постфикса?