我在stream1
(版本5.0 Beta)中创建了KSQL
,其主题为topic1
和avro
。我可以使用topic1
阅读kafka-avro-console-consumer
上的所有消息。
然后,我在stream2
的{{1}}中创建了KSQL
,该消息基于stream1
格式,用于消息和名为json
的主题。我可以使用topic2
topic2
上的所有消息
我基于kafka-console-consumer
以stream3
的消息格式创建了KSQL
的{{1}},消息主题为stream2
。但是,我无法使用json
阅读topic3
上的消息。
使用topic3
我在kafka-console-consumer
的各个分区上得到了偏移量,但是没有打印任何实际消息。
消息似乎在主题中,但kafkacat
而非topic3
都无法打印。
尝试使用kafkacat
和kafka-console-consumer
运气不佳。
这是KSQL语句
--from-beginning
其他信息
在--offset earliest --partition 0
中,如果我运行CREATE STREAM stream1(p_id STRING, location STRING, u_id STRING, r_id STRING, b_id STRING, recorded_dtm STRING,
v_type STRING, value STRING) WITH (kafka_topic='topic1', value_format='AVRO');
CREATE STREAM stream2 WITH (KAFKA_topic='topic2', VALUE_FORMAT='json', TIMESTAMP='RECORDED_TIMESTAMP')
AS select P_ID+'-'+LOCATION+'-'+U_ID+'-'+R_ID+'-'+B_ID+'-'+V_TYPE as PARTITION_KEY,
LOCATION, U_ID, R_ID, V_TYPE, B_ID, STRINGTOTIMESTAMP(recorded_dtm, 'yyyyMMddHHmmss') as RECORDED_TIMESTAMP,
P_ID, VALUE, RECORDED_DTM,'NM' as DATA_TYPE
FROM stream1 PARTITION BY PARTITION_KEY;
CREATE STREAM stream3 WITH (KAFKA_topic='topic3', VALUE_FORMAT='json', TIMESTAMP='RECORDED_TIMESTAMP')
AS select PARTITION_KEY, LOCATION, U_ID, R_ID, V_TYPE, B_ID, RECORDED_TIMESTAMP,
P_ID, VALUE, RECORDED_DTM FROM stream2 PARTITION BY PARTITION_KEY;
并运行ksql
或SET 'auto.offset.reset'='earliest';
,则看到打印的记录,但是select * from stream1 limit 5;
不返回任何记录。
如果我运行select * from stream2 limit 5
,我会得到
邮件总数:212
恰好是我发送给topic1的邮件数量
答案 0 :(得分:0)
根本原因是发送到主题1上的消息的Timestamp
上的STREAM3
值早于{{1}中设置的recorded_dtm
值}。
我们的log.retention.hours
值设置为kafka server.properties
,并且recorded_dtm值早于24小时。这导致log.retention.hours
和24 hours
中的邮件根据保留策略被立即删除。