Kafka Ksql对流重新设置密钥导致数据在几分钟后消失



重新密钥在以下场景中运行良好1.要流式传输的基本主题,然后重新键入-很好2.要流式传输然后重新密钥的表-良好的

但是当尝试表-将表联接到新表中,在生成的表上创建流,然后重新密钥流-它似乎可以正常工作几分钟(选择查询获得预期结果(,然后数据从新创建的流中消失。

-- Table on Table join - works as expected
CREATE TABLE JOINRESULT_T AS 
SELECT d.DEVICE_ID, d.LOCATION_ALIAS,d.UPDATED_BY, 
d.UPDATED_TIMESTAMP AS UPDATED_TIMESTAMP, d.__DELETED AS __DELETED
FROM TABLE1 d LEFT JOIN TABLE2 l ON d.LOCATION_ALIAS=l.ALIAS;
-- Stream from table - works as expected
CREATE STREAM FROMJOIN_S WITH(KAFKA_TOPIC='JOINRESULT_T', VALUE_FORMAT='AVRO');
-- Rekey the above stream - Data disappears after few minutes
CREATE STREAM REKEY_S AS SELECT * FROM FROMJOIN_S PARTITION BY DEVICE_ID;

描述流上的扩展命令显示流当前保存的消息数。但是select命令不会给出任何结果。关联主题上的打印主题命令也不打印任何内容。

在此处输入图像描述

Ksql版本:5.3.1,也尝试了最新版本分区=1,副本=1。

试图调查kafka服务器上的主题存储空间是否包含任何数据,发现日志文件和快照文件都为空。

什么会导致数据在写入主题后消失?

最可能的原因是Kafka集群中REKEY_S主题的保留率设置得较低,因此会积极删除"旧"消息。

请尝试调查保留策略/设置是否适用于REKEY_S主题。该策略不应该是紧凑的,并且应该具有由Kafka集群设置的默认主题保留策略。

如果奇怪的保留设置是原因,那么最好知道为什么保留是这样设置的,以及是什么。如果what是ksql,那么它很可能是一个bug,应该作为Github问题提出,以便进行调查。

最新更新