如何解决ksqlDB表中的数据是否持久?
我们正在使用ksqlDB 0.11.0,我们想将数据持久存储在ksqlDB的表中。但是我们设定 log.retention.hours设置为72,所以我很困惑该表是否存储了最近的72小时数据?
create stream stream_ori_sacmes_pack_detail with (kafka_topic = 'sacmes.pack.pack_detail',value_format = 'avro');
create stream STREAM_ETL_PACK_DETAIL
with (kafka_topic='gp_etl_pack_detail',PARTITIONS=1,REPLICAS=3,VALUE_FORMAT='avro')
as
select
id,line_id,tenant_id
from STREAM_ORI_SACMES_PACK_DETAIL
partition by id
emit changes;
create table KSQL_TABLE_GP_PACK_DETAIL
(id varchar,line_id varchar,tenant_id INTEGER
)
WITH (KAFKA_TOPIC='gp_etl_pack_detail',VALUE_FORMAT='avro');
解决方法
默认情况下,表中的最新数据将始终保留(在您的情况下超过72小时)。因此,对于表中的每个主键,最新的键+值对(行)将始终可用。
想象一下,以下更改已通过更改流应用于表:
| Key | City | Age | ... |
==================================
| Alice | Paris | 24 years | ... | INSERT
| Alice | Turin | 24 years | ... | UPDATE
| Bob | Bern | 40 years | ... | INSERT
| Alice | Rome | 24 years | ... | UPDATE
在此更改流的末尾,表的外观如下:
| Key | City | Age | ... |
==================================
| Alice | Rome | 24 years | ... |
| Bob | Bern | 40 years | ... |
该表的最新数据将始终保留。但是以前的更改(给定密钥的“较旧”行),例如爱丽丝(Alice)之前在巴黎和都灵,由于保留时间有限,最终将被从系统中清除。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。