KSQL - Присоединение к потокам с неравными разделами

Как объединить неравное количество потоков, содержащих разделы в KSQL, помимо увеличения раздела?

Пример Поток-1 имеет 3 раздела, а поток-2 - 2 раздела. В этом случае, конечно, мы можем увеличить количество разделов для Stream-1 при объединении 3. Но я хочу знать, есть ли другой способ объединить неравно-секционированные потоки через KSQL?


person Karthikeyan Rasipalay Durairaj    schedule 08.01.2019    source источник


Ответы (1)


Нет, к сожалению, KStream / KSQL не поддерживает объединение для неравно разделенных тем.

Обязательным условием является то, что обе темы должны иметь одинаковое количество разделов перед вызовом операции соединения, в противном случае она не удастся.

Подробнее о требовании совместного разделения можно прочитать здесь: https://docs.confluent.io/current/ksql/docs/developer-guide/partition-data.html#partition-data-to-enable-присоединяетсяк

Чтобы обеспечить совместное разделение, вы можете использовать предложение PARTITION_BY для создания нового потока:

CREATE STREAM topic_rekeyed WITH (PARTITIONS=6) AS SELECT * FROM topic PARTITION BY topic_key;
person Nishu Tayal    schedule 08.01.2019
comment
Спасибо за ваш ответ . Можно ли преобразовать неравные разделы KSQL KTable в GlobalKTable и присоединиться? Это возможно? Пожалуйста, подтвердите то же самое. - person Karthikeyan Rasipalay Durairaj; 09.01.2019
comment
Я не уверен, поддерживает ли KSQL глобальную таблицу как потоки Kafka. Но если вы используете KStreams, если вы определенно можете преобразовать в GlobalKTable, чтобы избежать совместного разделения. Чтобы обратить ваше внимание, GlobalKTable будет реплицировать данные со всех разделов на каждый узел для соединения с потоками / таблицей, поэтому он может не подходить для больших объемов данных. - person Nishu Tayal; 09.01.2019
comment
Еще раз спасибо за ответ. Согласно вашему утверждению, я могу заключить, что соединение неравных потоков разделов должно выполняться при соблюдении следующих условий. 1. Оба потока должны иметь равное количество разделов или 2. Мы можем преобразовать оба потока как GlobalKTable и объединить .. - person Karthikeyan Rasipalay Durairaj; 09.01.2019
comment
Заявление 1 верно, исправление для положения 2 Мы можем преобразовать оба потока как GlobalKTable и присоединиться - вы не можете объединить GlobalKTable-GlobalKTable. KStream поддерживает соединение Stream-Table, Table-Table, Stream-Stream и Stream-GlobalKTable. (docs.confluent.io/current/streams/developer -guide /), чтобы вы могли изменить один поток на GlobalKTable и выполнить соединение Stream-GlobalKTable - person Nishu Tayal; 10.01.2019