我在流-流连接查询结果上遇到意外行为。
情况
KSQL 版本:5.1.3
- 每个 kafka 主题创建 2 个流
#1.
CREATE STREAM streamA
(id VARCHAR)
WITH (KAFKA_TOPIC='topicA', VALUE_FORMAT='JSON');
#2.
CREATE STREAM streamB
(id VARCHAR,
date VARCHAR,
count INT)
WITH (KAFKA_TOPIC='topicB', VALUE_FORMAT='JSON')
- 流加入创建 Kafka 主题
CREATE STREAM streamC
WITH (KAFKA_TOPIC='topicC', VALUE_FORMAT='JSON', PARTITIONS=5) AS
SELECT b.id AS `id`,
b.date AS `date`,
b.count AS `count`
FROM streamB b
INNER JOIN streamA a WITHIN 1 DAY
on b.id = a.id;
问题
在这种情况下,当我进行以下 2 个查询时,一个可以获取所有信息,但另一个不能。您是否知道为什么会发生这种情况或我的查询存在一些问题?
参考
以下查询返回预期结果。
# OK
ksql> select a.id as `id`, a.date as `date`, a.count as `count` from streamA a inner join streamB b within 1 day on a.id = b.id;
# 00000001 | 2020-06-22 | 3
# OK
ksql> print 'topicC' from beginning;
# {"ROWTIME":1592804456184,"ROWKEY":"00000001","date":"2020-06-22","count":3}
但是,以下查询返回意外查询。
# NG
ksql> select * from streamC;
# 1592804456184 | 00000001 | null | null
# (expected result)
# 1592804456184 | 00000001 | 2020-06-22 | 3
附加信息
ksql> DESCRIBE streamC;
Name : STREAMC
Field | Type
-------------------------------------
ROWTIME | BIGINT (system)
ROWKEY | VARCHAR(STRING) (system)
date | VARCHAR(STRING)
count | INTEGER
-------------------------------------
For runtime statistics and query details run: DESCRIBE EXTENDED <Stream,Table>;
您运行的是 Confluent Platform 版本 5.1.3 附带的 KSQL 版本,看起来您遇到了一个错误。 我没有找到涵盖您的确切问题的问题。但是,最新版本确实有涵盖类似使用模式的测试用例,因此我相信您的问题已经解决。 您需要做的就是升级到包含修复程序的版本。
我建议升级到 5.5.1 CP 版本、即将发布的 6.0.0 CP 版本或社区 0.10 ksqlDB 版本,因为我知道这些版本包含修复程序。
我在流表连接方面遇到了同样的问题。 我的表键与流键完全相同,但加入不起作用。
我正在运行最新版本的 confluent 5.5.1。