Meine Tabelle ist rund 220mb mit 250k Datensätze drin. Ich versuche, alle diese Daten in Python zu ziehen. Mir ist klar, dass dies ein Chunked-Batch-Prozess sein muss und durchgeschleift werden muss, aber ich bin mir nicht sicher, wie ich die Chargen so einstellen kann, dass sie dort starten, wo der Vorgänger aufgehört hat.Kompletter Scan von dynamoDb mit boto3
Gibt es eine Möglichkeit, meinen Scan zu filtern? Von dem, was ich gelesen habe, tritt das Filtern nach dem Laden auf und das Laden stoppt bei 1 MB, so dass ich tatsächlich nicht in der Lage wäre, neue Objekte einzuscannen.
Jede Hilfe wäre willkommen.
import boto3
dynamodb = boto3.resource('dynamodb',
aws_session_token = aws_session_token,
aws_access_key_id = aws_access_key_id,
aws_secret_access_key = aws_secret_access_key,
region_name = region
)
table = dynamodb.Table('widgetsTableName')
data = table.scan()
Beachten Sie, dass die Elemente in 'Seite [‘ Elemente ']' ist möglicherweise nicht das, was Sie erwarten: Da dieser Paginator schmerzhaft generisch ist, erhalten Sie für jedes DynamoDB-Objekt ein Wörterbuch des Formattyps: value, z '{'myAttribute': {'M': {}}, 'IhrAttribut': {'N': u'132457 '}}' für eine Zeile mit einer leeren Map und einem numerischen Typ (der als String zurückgegeben wird, der Es muss "decimal.Decimal" vorgeschlagen werden, da es bereits eine Zeichenfolge benötigt und nicht ganzzahlige Zahlen behandelt. Andere Arten, z.B. Strings, Maps und Booleans werden von Boto in ihre Python-Typen konvertiert. – kungphu
ist es möglich, einen Scan-Filter oder Filter-Ausdruck mit Paginierung zu haben? – vnpnlz
Paginators wäre großartig, wenn es nicht für das Problem wäre @kungphu angehoben. Ich sehe nicht die Verwendung für etwas, das eine nützliche Sache tut, aber negiert es durch die Verschmutzung der Antwortdaten mit irrelevanten Metadaten –