apache-kafka - Kafka-Ksql Rekeying on stream 导致数据在几分钟后消失
问题描述
重新生成密钥在以下情况下工作正常 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;
流上的描述扩展命令显示流当前持有的消息数。但是选择命令不会给出任何结果。相关主题的打印主题命令也不会打印任何内容。
Ksql 版本: 5.3.1 ,还尝试了最新版本 Partitions = 1,replicas =1。
尝试调查kafka服务器上的主题存储空间是否保存任何数据并发现日志文件,快照文件都是空的。
将数据写入主题后,什么会导致数据消失?
解决方案
最可能的原因是REKEY_S
Kafka 集群中主题的保留设置较低,因此正在积极删除“旧”消息。
尝试调查保留策略/设置是否适用于REKEY_S
主题。该策略不应该是紧凑的,并且应该具有 Kafka 集群设置的默认主题保留策略。
如果奇怪的保留设置是原因,那么最好知道为什么要以这种方式设置保留以及由什么设置。如果什么是 ksql,那么它可能是一个错误,应该作为Github 问题提出,以便对其进行调查。
推荐阅读
- excel - 转置多个数据范围
- visual-studio-code - 如何阻止 VScode 记住已关闭文件的保存状态?
- java - 底页不适用于谷歌地图
- javascript - Keycloak - Tomcat 适配器 vs mod_auth_openidc,有哪些用例
- c# - 为什么 typeof(HttpResponseMessage) 为空?
- django - Django - 我应该为我的案例使用什么 CBV?
- angular - 两个连接到不同路由文件的路由器出口
- asp.net - 如何使用转换更新 Web.Config 中的部分?
- google-cloud-platform - 将所有流式传输到 bigquery 的数据
- mongodb - 猫鼬在哪里算