Scan complet de dynamoDb avec boto3
Ma table est d'environ 220 mo avec 250k enregistrements. Je suis d'essayer de tirer de l'ensemble de ces données en python. Je réalise que j'ai besoin d'être un bloc processus de traitement par lots et en boucle, mais je ne suis pas sûr de savoir comment je peux mettre des lots de commencer là où le précédent arrêté.
Est-il un moyen de filtrer mon analyse? De ce que j'ai lu que le filtrage se produit après le chargement et le chargement s'arrête à 1 mo donc je ne pas vraiment être capable de numériser des objets nouveaux.
Toute aide serait appréciée.
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()
source d'informationauteur CJ_Spaz
Vous devez vous connecter pour publier un commentaire.
boto3 offre paginators qui traitent tous de la pagination des détails pour vous. Ici est la page de doc pour l'analyse paginator. Fondamentalement, vous pouvez l'utiliser comme ceci:
Je pense que le Amazon DynamoDB documentation sur le tableau de numérisation répond à votre question.
En bref, vous aurez besoin de vérifier pour
LastEvaluatedKey
dans la réponse. Voici un exemple d'utilisation de votre code:Aussi Jordan Phillips réponse, voici comment vous pouvez passer un
FilterExpression
avec la pagination:Code pour la suppression de dynamodb type de format que @kungphu mentionné.
S'avère que Boto3 de capture de la "LastEvaluatedKey" dans le cadre de la réponse renvoyée. Ceci peut être utilisé comme point de départ pour une analyse:
J'ai l'intention de construire une boucle autour jusqu'à ce que les données retournées n'est le ExclusiveStartKey