KSQL Присоединяйтесь к более чем двум потокам - PullRequest
0 голосов
/ 31 октября 2018

Можно ли объединить более двух потоков / таблиц в KSQL?

Пример:

У меня есть три потока:

CREATE STREAM StreamA (id BIGINT, message VARCHAR) WITH 
(KAFKA_TOPIC='TopicA', VALUE_FORMAT='DELIMITED');
CREATE STREAM StreamB (id BIGINT, aid BIGINT, message VARCHAR) WITH . 
(KAFKA_TOPIC='TopicB', VALUE_FORMAT='DELIMITED');
CREATE STREAM StreamC (id BIGINT, bid BIGINT, message VARCHAR) WITH 
(KAFKA_TOPIC='TopicC', VALUE_FORMAT='DELIMITED');

Я пытаюсь создать другой поток, объединяя эти три потока:

CREATE STREAM ABCStream AS SELECT * FROM StreamA a JOIN 
StreamB b ON b.aid = a.id JOIN StreamC c WITHIN 1 HOURS ON 
c.bid = b.id; 

Я получаю следующее исключение:

mismatched input 'JOIN' expecting ';'  
Caused by: org.antlr.v4.runtime.InputMismatchException

1 Ответ

0 голосов
/ 31 октября 2018

Нет, вы можете объединить только два запроса в KSQL до версии 5.0. Вам нужно последовательно соединить ваши запросы, что-то вроде этого:

Промежуточный поток:

CREATE STREAM ABStream AS \
   SELECT * \
     FROM StreamA a \
     JOIN StreamB b \
          ON b.aid = a.id;

Многопользовательский поток

CREATE STREAM ABCStream AS \
   SELECT * \
     FROM ABStream AB \
     JOIN StreamC c \
          WITHIN 1 HOURS \
          ON c.bid = AB.b_id;
...