Tim*_*mbe 3 join stream apache-kafka ksqldb
是否可以在 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');
Run Code Online (Sandbox Code Playgroud)
我尝试通过加入这三个流来创建另一个流:
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;
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
mismatched input 'JOIN' expecting ';'
Caused by: org.antlr.v4.runtime.InputMismatchException
Run Code Online (Sandbox Code Playgroud)
不可以,在 KSQL v5.0 及之前版本中,每个查询只能连接两个。您需要以菊花链方式连接您的查询,如下所示:
中级流:
CREATE STREAM ABStream AS \
SELECT * \
FROM StreamA a \
JOIN StreamB b \
ON b.aid = a.id;
Run Code Online (Sandbox Code Playgroud)
多连接流
CREATE STREAM ABCStream AS \
SELECT * \
FROM ABStream AB \
JOIN StreamC c \
WITHIN 1 HOURS \
ON c.bid = AB.b_id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2693 次 |
| 最近记录: |