私のテーブルは250kレコードで約220MBです。私はこのデータをすべてPythonに変換しようとしています。私は、これがチャンクされたバッチプロセスである必要があることを理解していますが、バッチをどのように設定して、前のバッチ処理を中止するかはわかりません。boto3でdynamoDbを完全にスキャン
スキャンをフィルタリングする方法はありますか?私が読み込んだものから、読み込み後にフィルタリングが発生し、読み込みが1MBで終了するので、実際には新しいオブジェクトをスキャンすることはできません。
ご協力いただければ幸いです。
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()
注 'ページの[」内の項目ことアイテム '] 'はあなたが期待しているものではない可能性があります。このページネータは痛々しく一般的ですので、各DynamoDBアイテムで返されるものは、フォーマットタイプの辞書です。 '{'myAttribute':{'M':{}}、 'yourAttribute':{'N':u'132457 '}}'は、空のマップと数値型を持つ行です(これは、キャストする必要があります;これは 'decimal.Decimal'です。これは既に文字列を受け取り、非整数を扱うためです)。他のタイプ、例えば。文字列、マップ、およびブール値は、botoによってPythonの型に変換されます。 – kungphu
は、ページングを使用してスキャンフィルタまたはfilterexpressionを持つ可能性はありますか? – vnpnlz
@kungphuが問題を提起しなかった場合、ページめがねはすばらしいでしょう。私は有用なものは1つしかないが、レスポンスデータを無関係のメタデータで汚染することによってそれを無効にするものは使用しない。 –