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

解释Kinesis碎片迭代器-AWS Java SDK

赵越
2023-03-14

好的,我将从一个详细的用例开始,并解释我的问题:

  1. 我使用第三方web分析平台,该平台利用AWS Kinesis流将数据从客户端传递到最终目的地--Kinesis流;
  2. web分析平台使用2个流:
    1. 数据收集器流(单个碎片流);
    2. 第二流,用于充实来自收集器流(单个碎片流)的原始数据;最重要的是,该流使用trim_horizon迭代器类型使用来自第一个流的原始数据;

    我的问题是,我检索的数据不一致,没有时间逻辑在其中。

    >

  3. 当我使用at_sequence_number并用

    .getSequenceNumberRange().getStartingSequenceNumber();

      null

共有1个答案

闻华容
2023-03-14

我理解上面的困惑,我也有同样的问题,但我想我现在已经解决了。请注意,我直接使用JSON API而不使用KCL。

我认为,当客户开始使用流时,API为他们提供了2种基本的迭代器选择:

A)trim_horizon:用于读取延迟在几分钟(甚至几小时)到24小时之间的过去记录。它不会返回最近放置的记录。对这个迭代器看到的最后一条记录使用AFTER_SEQUENCE_NUMBER返回一个空数组,即使记录是最近放置的。

以上所述确实意味着,如果您想要实时读取所有已知的过去记录和未来记录,您必须使用a和B的组合,并使用逻辑来处理介于两者之间的记录(最近的过去)。KCL可以很好地解决这个问题。

 类似资料:
  • 我正试着从动觉碎片中获取记录。我循环获取碎片迭代器,然后获取迭代器中的记录。我似乎得到了无数个迭代器,其中没有一个包含任何记录。 我的问题涉及迭代器的寿命。考虑到Kinesis只能保存24小时的数据,迭代器的寿命应该是5分钟,我不应该在任何时间点看到最多288个迭代器吗?

  • 问题 你想得到一个由迭代器生成的切片对象,但是标准切片操作并不能做到。 解决方案 函数 itertools.islice() 正好适用于在迭代器和生成器上做切片操作。比如: >>> def count(n): ... while True: ... yield n ... n += 1 ... >>> c = count(0) >>> c[10:20] Tr

  • 我有一个用于交换片段的框架布局。我使用导航抽屉,每个菜单项都会打开一个片段。所以可以肯定的是,在所有应用程序周期中,屏幕上同时只有一个片段(因此只有一个活动)。下面您可以找到我的片段开始方法 所以当我在androidstudio上检查时,每次我用上述方法替换fragment时,内存使用量都会增加<代码>碎片事务。删除不会释放碎片,而替换也不会释放碎片。所以,过了一段时间,如果我点击每一个菜单项,一

  • 本文向大家介绍Python进阶之迭代器与迭代器切片教程,包括了Python进阶之迭代器与迭代器切片教程的使用技巧和注意事项,需要的朋友参考一下 在前两篇关于 Python 切片的文章中,我们学习了切片的基础用法、高级用法、使用误区,以及自定义对象如何实现切片用法(相关链接见文末)。本文是切片系列的第三篇,主要内容是迭代器切片。 迭代器是 Python 中独特的一种高级特性,而切片也是一种高级特性,

  • 所以我决定在放弃一段时间后再回到android开发。我在android studio中重新开始制作一个旧项目,我遇到了一个问题,我得到了“无法解析符号碎片容器”,我确信它上次是有效的。

  • 问题内容: 为简单起见,请设想这种情况,我们有一台2位计算机,它具有一对称为r1和r2的2位寄存器,并且仅适用于立即寻址。 假设位序列 00 表示 添加 到我们的CPU中。也 01 的装置将数据移动到R 1和 10组 的装置将数据移动到R2。 因此,这台计算机和一个汇编器都有一种汇编语言,其中的示例代码将像 简而言之,当我将此代码汇编成本地语言时,文件将类似于: 上面的12位是以下代码的本机代码: