我已經檢查的所有AWS文檔上室壁運動。我發現的所有內容都是生產者如何將數據流式傳輸到kinesis流上,並且消費者在初始化時使用這些流(FIFO類型的種類)。如果發送到流的數據在碎片中保留24小時,我想多次訪問特定值。但是,我沒有找到一個合適的機制來做到這一點。有沒有辦法掃描kinesis流而不是像FIFO模型那樣處理流。我如何在亞馬遜掃描特定流記錄室壁運動
1
A
回答
1
沒有呢,可惜你不能做到這一點。
如果你知道你的數據的位置(即checkpoint
值),你可以開始閱讀碎片從那個地方開始。但除此之外,沒有搜索機制。
如果你真的需要捕捉特定的值,並多次對其進行處理;您可能需要在消費者應用程序上使用一些內存中數據庫式緩存結構。如果你有這麼大的數據高速移動,Redis,Memcache或者VoltDB可能會有所幫助。
0
當您將記錄放入Kinesis中時,製作者正在獲取序列ID和碎片ID(請參閱PutRecord的API:http://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html)。
響應語法:
{
"SequenceNumber": "string",
"ShardId": "string"
}
您可以使用該序列ID和碎片ID來從消費者端的室壁運動流獲取該記錄(見GetShardIterator這裏的API:http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html)。
請求語法:
{
"ShardId": "string",
"ShardIteratorType": "string",
"StartingSequenceNumber": "string",
"StreamName": "string"
}
請注意,如果你正在尋找更多的發佈 - 訂閱模式,你應該使用SNS而不是室壁運動,這是更多的事件流處理(主要是先進先出的順序優化)近實時。
相關問題
- 1. 何時使用EMR或掃描亞馬遜的Dynamo-DB?
- 2. 星火室壁運動流例如
- 3. 亞馬遜RDS - 從DNS記錄
- 4. 亞馬遜DynamoDB Json支持查詢和掃描
- 5. 我如何使用運動衫和亞馬遜AWS(elastic beanstalk)
- 6. 亞馬遜WAF +亞馬遜API網關
- 7. Boto3閱讀室壁運動流
- 8. 室壁運動流與在谷歌Dataproc空記錄星火1.6.1 Hadoop的2.7.2
- 9. 如何從亞馬遜S3
- 10. 我如何(亞馬遜的Linux)
- 11. 在室壁運動(KCL)C#
- 12. 亞馬遜SimpleDB
- 13. 亞馬遜simpleDB
- 14. 亞馬遜自定義AMI
- 15. 亞馬遜RDS定價
- 16. 亞馬遜ec2在後臺運行playframework
- 17. 如何將請求路由到亞馬遜的特定實例?
- 18. 測試亞馬遜SWF工作流程
- 19. 流星亞馬遜s3刪除圖像
- 20. 獲取亞馬遜MWS節流限制
- 21. 如何將圖像文件從亞馬遜S3移動到亞馬遜EC2並使用java運行實例
- 22. AWS室壁運動沒有返回記錄
- 23. AWS室壁運動GET-記錄返回空數組
- 24. 如何OT添加室壁運動流來觸發lambda函數
- 25. 亞馬遜SNS:MessageAttributes TTL
- 26. 亞馬遜dynamoDb ValidationException
- 27. 亞馬遜SES getSendStatistics
- 28. 亞馬遜架構
- 29. 與亞馬遜DynamoDB
- 30. Restcomm亞馬遜ECS
Is'nt室壁運動是一個出版商訂購模式。如果是這種情況,那麼我們應該能夠抓住流中的任何數據點併發布或多次處理它? – ZZzzZZzz
是的,如果您仔細實施,該方法可能會有效。但不要忘記,檢查點只是一個佔位符,就像遊標一樣。它不符合特定的數據。 Kinesis不是一家重要的商店。 – az3
在Kinesis的後臺系統中,有一個叫做「碎片迭代器」的概念。爲了組成一個分片迭代器,可以將「開始序列號」作爲一個參數(這是一個~56字符長的數字值,在KCL應用程序的發電機數據庫中將其視爲檢查點)。然後Kinesis客戶端爲您提供一個關於該起始序列號的分片迭代器(具有〜224個字符)。在構建分片迭代器之後,您要求「從該點開始的分片中的其餘數據」。 TLDR;您無法呼叫單個記錄。 – az3