Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何在Amazon Kinesis中扫描特定的流记录_Amazon Web Services_Amazon Kinesis - Fatal编程技术网

Amazon web services 如何在Amazon Kinesis中扫描特定的流记录

Amazon web services 如何在Amazon Kinesis中扫描特定的流记录,amazon-web-services,amazon-kinesis,Amazon Web Services,Amazon Kinesis,我已经检查了所有关于运动的AWS文档。我所发现的只是生产者如何将数据流传输到运动流,消费者如何在初始化时使用这些流(类似于FIFO模型)。如果发送到流的数据在碎片中停留24小时,我希望多次访问特定值。然而,我没有找到一个合适的机制来做到这一点。有没有一种方法可以扫描运动流,而不是像FIFO模型那样处理流。没有,很遗憾,您不能这样做 如果您知道数据的位置(即检查点值),则可以从该位置开始读取碎片。但除此之外,没有搜索机制 如果您真的需要捕获特定值并多次处理它;您可能希望在用户应用程序上使用一些内存

我已经检查了所有关于运动的AWS文档。我所发现的只是生产者如何将数据流传输到运动流,消费者如何在初始化时使用这些流(类似于FIFO模型)。如果发送到流的数据在碎片中停留24小时,我希望多次访问特定值。然而,我没有找到一个合适的机制来做到这一点。有没有一种方法可以扫描运动流,而不是像FIFO模型那样处理流。

没有,很遗憾,您不能这样做

如果您知道数据的位置(即
检查点
值),则可以从该位置开始读取碎片。但除此之外,没有搜索机制


如果您真的需要捕获特定值并多次处理它;您可能希望在用户应用程序上使用一些内存中的数据库,如缓存结构。如果您有如此大的数据高速移动,Redis、Memcache或VoltDB可能会有所帮助。

当您将记录放入Kinesis时,制作者将获得序列ID和碎片ID(请参阅此处PutRecord的API:)

响应语法:

{
    "SequenceNumber": "string",
    "ShardId": "string"
}
您可以使用此序列ID和碎片ID从消费者端的kinesis流中获取记录(请参见此处GetShardIterator的API:)

请求语法:

{
    "ShardId": "string",
    "ShardIteratorType": "string",
    "StartingSequenceNumber": "string",
    "StreamName": "string"
} 

请注意,如果您正在寻找更多的发布子模型,您应该使用而不是Kinesis,它更适合于近实时的事件流处理(主要是FIFO顺序)。

is'nt Kinesis是发布者-订阅者模型。如果是这种情况,那么我们应该能够捕获流中的任何数据点并将其发布或处理多次?是的,如果您仔细实施,这种方法可能会奏效。但别忘了,检查点只是一个占位符,就像光标一样。它与特定数据不对应。Kinesis不是键值存储。在Kinesis的后台系统中,有一个称为“碎片迭代器”的概念。要组成碎片迭代器,您需要将“起始序列号”作为一个参数(这是一个~56个字符长的数值,您可以在KCL应用程序的dynamo db中将其视为检查点)。然后,Kinesis客户端提供一个关于起始序列号(约224个字符)的碎片迭代器。构造碎片迭代器后,您需要“碎片中的其余数据,从该点开始”。太长,读不下去了您不能调用一条记录。