Ich benutze Dynamodb, um Aggregation Berichte zu erstellen. Mein Programm wird alle 10 Minuten ausgelöst, um die Datensätze von Dynamodb-Streams zu erhalten, die in den letzten 10 Minuten geschrieben wurden, und um zusammengefasste Berichte zu erstellen. Ich würde gerne wissen, wie man das mit Python und Boto3 macht. Ich habe versucht, wenn es einen Zeitparameter in get_shard_iterator gibt, aber es gibt keinen. Ich muss den shard_iterator basierend auf dem Erstellungsdatum abrufen. Gibt es einen anderen Weg, dies zu tun?Get Last N Minuten Datensätze Dynamodb Streams
0
A
Antwort
0
Alles in einem Kinesis-Stream ist nach einer 'sequence_number' sortiert. Wenn Sie alle Datensätze für die letzten 10 Minuten möchten, müssen Sie den Stream mit einem neuen shard_iterator abfragen, der angibt, mit welcher Sequenznummer gestartet werden soll. dann verarbeite alles im Stream.
Ich würde empfehlen, den Daten, die Sie über Kinesis senden, einen utc-Zeitstempel hinzuzufügen und ihn dann erneut zu bestellen, wenn Sie ihn alle 10 Minuten konsumieren.
Grob aus dem Gedächtnis, sollte es so etwas wie dieses:
import boto3
KINESIS_CLIENT = boto3.client('kinesis', region_name='eu-west-1')
stream_name="your stream name"
# you may need to retrieve this from via boto if dynamically generated
shard_id="your shard id"
# how to get the first record from the stream with the starting sequence number
#KINESIS_CLIENT.get_shard_iterator(StreamName=stream_name, ShardId=shard_id, ShardIteratorType='TRIM_HORIZON')
shard_iterator = KINESIS_CLIENT.get_shard_iterator(StreamName=stream_name, ShardId=shard_id,
ShardIteratorType='AFTER_SEQUENCE_NUMBER',
StartingSequenceNumber=sequence_number)
records = KINESIS_CLIENT.get_records(ShardIterator=shard_iterator, Limit=2500)
Alles ist dokumentiert: http://boto3.readthedocs.io/en/latest/reference/services/kinesis.html
Verwandte Themen
- 1. Realm get last n Ergebnisse
- 2. DynamoDB Streams zu S3
- 3. Get 'N' Anzahl der Datensätze in Marklogic
- 4. DynamoDB absteigende Sortierung Datensätze holen
- 5. mysql Last xml Anweisung erzeugt 0 Datensätze
- 6. Laravel wählen Datensätze älter als 5 Minuten?
- 7. php xpath - get last Attribut
- 8. Streams, Stream_Bufs, Codecvt Facetten und \ n \ r \ n Übersetzung
- 9. Google Analytics - weniger als n Minuten her
- 10. Gruppierung alle n Minuten mit dplyr
- 11. DynanoDB Streams Verhalten nach Neuverteilung
- 12. Node.js- get StringSet von AWS DynamoDB
- 13. jQuery/Javascript - Get Bildgröße vor Last
- 14. Libreoffice Base-Basisformularfeld Wert auf Last Get
- 15. n Datensätze aus n-te Datensatz in Linq
- 16. Lesen von AWS Dynamodb Stream
- 17. Senden HTTP GET Anfrage an mich alle X Minuten
- 18. Hive - top n Datensätze innerhalb einer Gruppe
- 19. Gleichzeitige Anpassung an N Datensätze in Python
- 20. Wie update ersten n Datensätze in SQLite
- 21. Top-N Datensätze wählen für jede Entität
- 22. können Sie Dynamodb-Streams verwenden, um Echtzeit-Trigger wie Firebase zu haben?
- 23. Wie man 1 modelliert: N: M in dynamodb
- 24. Backup & Restore DynamoDb Tabellen
- 25. Abfrage zu viel Zeit (3 Minuten für 100k Datensätze)
- 26. Kinesis Lambda DynamoDB
- 27. DynamoDB Scan-Performance-Problem
- 28. Java-Threading-Frage - Hören von n Fehler-Streams
- 29. Get distinct Datensätze mit LINQ zu Entität
- 30. Wie Timer einstellen eine Funktion alle n Minuten anrufen?
DynamoDB Ströme sind sharded auf den Primärschlüssel basiert, nicht Zeitstempel, so Theres keine ‚eingebaute in der Art, dies zu tun. –