当前位置: 首页 > 知识库问答 >
问题:

如何从Amazon Kinesis流中获取最新记录?

羊冠玉
2023-03-14

我想从Amazon Kinesis流中获取最新记录。我打算从中提取时间戳,并将其与消费者应用程序检查指向的最后一条记录的时间戳进行比较,以检查消费者是否落后。

我不能使用最新的shard迭代器类型。这是因为LATEST指向最近的记录之后,因此它不能用于访问最近的记录。

有没有简单的方法可以获得最新记录?

我正在考虑的一种方法是获取消费者最近处理的记录序列号的碎片迭代器,使用该碎片迭代器发出GetRecords请求,从请求的结果中获取下一个碎片迭代器,然后重复,直到GetRecords请求不返回任何记录。

这种方法需要读取自消费者检查点以来的所有记录,这似乎是不必要的浪费。有没有办法要求所有这些记录?

共有1个答案

端木野
2023-03-14

您可以使用指标:GetRecords。来自CloudWatch运动指标的IteratorAgeMilliseconds。请参见此处:http://docs.aws.amazon.com/kinesis/latest/dev/monitoring_with_cloudwatch.html

注意,这是跨多个碎片的多个迭代器的平均值。如果需要在每个碎片上更精细地查看此指标,可以将其作为处理器的一部分进行计算。

请记住,在具有多个分片的流中没有最新记录,因为每个分片的顺序都是独立的。如果您有多个分片,您需要检查每个分片的状态。在独立的工作器中处理每个分片也是最佳实践,这通常会导致每个工作器的不同延迟。

另一个重要的注意事项是,你可以有多个进程的动觉流。可以将事件放入红移,可以处理事件以在操作仪表板中创建实时计数器。这意味着您可以对每种类型的处理器具有不同的延迟,而不仅仅是对每个碎片。

 类似资料:
  • 问题内容: 在日志中,我得到: “来自LAHETYS”发生了什么事?使用HQL或/和SQL处理此问题的最佳实践是什么? 另一个问题: 我得到一个例外: 所以我不能将对象投射到我的Lahetys对象上,很奇怪吗? 谢谢!佐美 问题答案: 您的HQL查询无效。LIMIT不是有效的HQL子句。要在Hibernate中做到这一点,只需

  • 问题内容: 在下表中,如何仅根据登录列获取的 最新记录 ,而不是所有3条记录? 问题答案: 使用按ID分组的汇总。这将列出每个最新的。 要获取完整的单个记录,请对仅返回每个ID 的子查询执行。

  • 问题内容: 我需要从数据库获取最新记录。我正在使用sqlalchemy。此刻,我正在那样做: 但是查询太繁琐了。我怎样才能更好地获得最近的记录? 问题答案: 看一看。如果你在右列上指定排序,则第一个将是你的最后一个。一个示例可能如下所示:

  • 问题内容: 所以我有两个表,一个是RAWtable,另一个是MAINtable,如果存在多个记录(比较相同的名称,代码),我必须获取最新的groupID。例如,我在RAWtable上有这个: 这两个记录应视为一个,并且应仅返回此值: 该行是应插入主表中的唯一行。提供返回的最新GroupID(groupid是日期和时间的组合) 我已经尝试过了,但是没有用: 我怎样才能做到这一点?多谢。 问题答案:

  • 问题内容: 我有三个表: 我需要获取每次测量的最新事件(过去的事件)及其相关的eventvalues数据。 我当前的查询很丑陋: 而且只允许我从表格中选择一列(我需要更多) 有什么方法可以使用联接来完成此操作吗? 编辑 :即使它们在第一个事件之前,我也需要从测量表中选择所有条目(即,为连接选择空数据) 问题答案: 您可以使用CROSS APPLY。

  • 我试图使用类似于https://github.com/aws-sample/amazon-kinesis-learning的Kinesis客户端库来使用Kinesis数据流。但在这个例子中,他们计划了这个过程。我想消费没有调度器传入的记录。 我不想使用DynamoDB,CloudWatch。期望一个简单的使用者使用流中的记录 有没有什么方法可以在没有调度程序的情况下使用java处理记录