【发布时间】:2021-05-28 17:42:05
【问题描述】:
我们正在使用 KSQLDB 执行 POC,但有一些疑问:-
我有一个名为 USERPROFILE 的 Kafka 主题,它有大约 1 亿条唯一记录和 10 天的保留政策。此 Kafka 主题继续从其底层 RDBMS 表中实时接收 INSERT/UPDATE 类型的事件。
以下是这个kafka主题中接收到的记录的简单结构:-
{"userid":1001,"firstname":"Hemant","lastname":"Garg","countrycode":"IND","rating":3.7}
1.) 我们已经在上述主题上打开了一个 Kafka Stream :-
create STREAM userprofile_stream (userid INT, firstname VARCHAR, lastname VARCHAR, countrycode VARCHAR, rating DOUBLE) WITH (VALUE_FORMAT = 'JSON', KAFKA_TOPIC = 'USERPROFILE')>;
2.) 因为,给定的 userId 可以更新,我们只想要唯一的记录(对于每个 userId),我们还在上述主题上打开了另一个 Kafka 表:-
ksql> create TABLE userprofile_table(userid VARCHAR PRIMARY KEY, firstname VARCHAR, lastname VARCHAR, countrycode VARCHAR, rating DOUBLE) WITH (KAFKA_TOPIC = 'USERPROFILE', VALUE_FORMAT = 'DELIMITED');
问题是:-
-
打开 KTable 是否需要额外的磁盘空间?例如,Kafka 主题有 1 亿条记录,相同的记录是否也会出现在 KTable 中,或者只是底层 kafka 主题的一些虚拟视图?
-
我们打开的信息流也有同样的问题。打开 KStream 是否需要磁盘(经纪人服务器的)额外空间?例如,Kafka 主题有 1 亿条记录,相同的记录是否也会出现在 KStream 中,或者它只是底层 kafka 主题的一些虚拟视图?
-
说,我们在 5 月 1 日收到 id 为 1001 的记录,然后在 5 月 11 日,该记录将不再在 Kafka 主题上可用,但是该记录是否仍会出现在 kstream / Ktable 上? KStream / KTable 是否有一些保留政策,就像我们对 Topic 的保留政策一样?
答案将不胜感激。
-- 最好的 阿地亚
【问题讨论】:
标签: apache-kafka apache-kafka-streams confluent-platform ksqldb ktable