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

NextShardIterator在从kinesis流读取数据时从不返回null

邬楚青
2023-03-14

我试图在lambda函数中的特定时间戳之后从动觉流中读取记录。我得到碎片,碎片迭代器,然后是数据<当我得到第一个迭代器时,我得到数据,并使用NextShardIterator(返回的数据中存在)递归地调用同一个函数。根据文档,当没有更多数据可读取且达到$latest时,NextShardIterator将返回null<但它从不返回null,函数不断被调用,最终我得到了配置吞吐量超过异常<我还尝试使用MillisBehindLatest在值为零时停止读取,但在某些情况下也失败了。

有没有基于时间戳从动觉中获取数据的正确方法?

共有1个答案

松翔
2023-03-14

NextShardIterator只有在到达关闭分片的末尾时才会返回null(在使用UpdateShardCount、SplitShard或MergeShard更新分片计数的情况下)

  • https://docs.amazonaws.cn/en_us/kinesis/latest/APIReference/API_GetRecords.html#API_GetRecords_ResponseSyntax

NextShardIterator碎片中开始顺序读取数据记录的下一个位置。如果设置为null,碎片已关闭,请求的迭代器不会返回更多数据

如果您想从指定的时间戳开始读取流,最好的方法是将事件源映射与lambda一起使用,并在lambda中将StartingPoplace指定为TIMESTAMP。

  • https://docs.aws.amazon.com/lambda/latest/dg/API_CreateEventSourceMapping.html#SSS-CreateEventSourceMapping请求启动位置
 类似资料:
  • 上下文:我正在尝试使用API引用从Kinesis流中获取记录。我正在使用。网络核心(3.1版本)。 我正在使用API将数据写入Kinesis流。这个问题没有任何问题。但是我在阅读数据方面有一些问题。我将getRecord方法放入do-while循环中。while is nextShardIterator值是否为null?但是这个值永远不会为null。我不能打破这个循环。 一些答案包括这样的短语:“

  • 我正试图成为一个动觉消费者客户。为了解决这个问题,我阅读了《Kinesis开发人员指南》和AWS文档http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-record-processor-implementation-app-java.html. 我想知道是否有可能从两个不同的流中获取数据并进行相应的处理。 假设我有两个不同的流,分别是流1和流

  • 我必须从错误中读取数据。yml文件,并将其存储在下面的结构图中。当使用下面的配置来存储值时,我得到了null。有人能帮我吗?谢谢 配置类: @Configuration@PropertySource(value=“classpath:error.yml”,factory=YamlPropertyResourceFactory.class)@EnableConfigurationProperties

  • 我正在使用: Python 3.6.8 火花2.4.4 我在spark类路径中有以下JAR: http://repo1.maven.org/maven2/com/databricks/spark-redshift_2.11/2.0.1/spark-redshift_2.11-2.0.1.jar http://repo1.maven.org/maven2/com/databricks/spark-a

  • 我们如何从AWS的运动流中读回时间 使用AWS Kinesis stream,可以发送事件流,消费者应用程序可以读取事件。Kinesis Stream worker从最后一个检查点获取记录并将其传递给IRecordProcessor#processRecords 但是,如果我需要读取回溯到时间的记录,例如从2小时前开始处理记录,我如何配置我的运动工作者来获取这些记录?

  • 我有一个kinesis流,有一个碎片和一个用Python编写的lambda函数。我添加了kinesis流作为批量大小为5的事件源。我在kinesis中添加了数百条记录,lambda函数得到了正确的调用和执行。但是对于最后3条记录,lambda函数被无限地调用,即使函数返回是成功的。