Apache kafka 如何使用卡夫卡和浮士德检查在给定时间段内是否发送了新记录

Apache kafka 如何使用卡夫卡和浮士德检查在给定时间段内是否发送了新记录,apache-kafka,apache-kafka-streams,stream-processing,faust,Apache Kafka,Apache Kafka Streams,Stream Processing,Faust,我使用的测试设置包括confluent platform(docker)和am处理记录,其中包含以下信息:传感器ID、时间戳、值。 使用robinhood的《浮士德》(与Kafka Streams类似,但使用python),我试图做到以下几点: 每当有传感器的新记录时,都应该有一个“计时器”,如果在给定时间内没有收到该传感器ID的新记录,则应该有一个错误,指示该传感器/机器可能出现故障 我尝试过使用time.sleep(),但结果是它只会休眠10秒,然后处理下一条记录 我正在使用的设置是否可以执

我使用的测试设置包括confluent platform(docker)和am处理记录,其中包含以下信息:传感器ID、时间戳、值。 使用robinhood的《浮士德》(与Kafka Streams类似,但使用python),我试图做到以下几点:

每当有传感器的新记录时,都应该有一个“计时器”,如果在给定时间内没有收到该传感器ID的新记录,则应该有一个错误,指示该传感器/机器可能出现故障

我尝试过使用
time.sleep()
,但结果是它只会休眠10秒,然后处理下一条记录

我正在使用的设置是否可以执行类似操作?

您可以使用:

创建传感器信息流

CREATE STREAM sensorinformation \
  (sensorid VARCHAR, \
   sensortimestamp BIGINT, \
   value VARCHAR) \
 WITH (KAFKA_TOPIC='sensorinformationtopic', \
       VALUE_FORMAT='DELIMITED', \
       KEY='sensorid', \
       TIMESTAMP='sensortimestamp');
最后创建一个表,其中包含在10秒内仅出现一次的故障传感器:

CREATE TABLE faulty_sensors AS \
  SELECT sensorid, \
         count(*) \
  FROM sensorinformation \
  WINDOW TUMBLING (SIZE 10 SECONDS) \
  GROUP BY sensorid \
  HAVING count(*) = 1;

我想你误解了这里的问题。在这种情况下,如果10秒或更长时间内没有新记录,则会出现故障。据我所知,如果每10秒窗口中有一条以上的记录,您的回答将失败。如果我错了,请让我知道。由于我无法以所描述的方式解决问题,我使用了以传感器ID为键、以最新时间戳为值的字典进行了变通。每当收到任何记录(通常每秒不止一次)时,都会检查此词典是否有早于10秒的时间戳。这可能不是最好的解决方案,但到目前为止,这是我唯一能想到的解决方案