AWSDynamoDB的ParallelScan结果排序问题
创始人
2024-09-24 22:30:38
0

AWS DynamoDB 的 ParallelScan 方法可以并行扫描 DynamoDB 表中的数据,但结果的排序可能不会按照用户预期的顺序排列,因为它们将被返回一致性级别和扫描使用的不同分区键影响。以下是一种可能的解决方法,通过将 ParallelScan 方法中的扫描分为多个批次并按照指定顺序对其进行排序来确保结果的顺序一致性。

示例代码:

from boto3.dynamodb.conditions import Key, Attr import boto3

要扫描的 DynamoDB 表和索引

table_name = 'my_table' index_name = 'my_index'

定义扫描的分批大小和需要排序的属性

batch_size = 100 sort_key = 'my_sort_key'

获得 DynamoDB 客户端

dynamodb = boto3.client('dynamodb')

获取分区键的总数以确定要分配的批次数

partition_count = dynamodb.describe_table(TableName=table_name)['Table']['ItemCount'] batches = partition_count // batch_size

循环遍历批次并进行并行扫描

results = [] for batch in range(batches): start_partition = batch * batch_size end_partition = start_partition + batch_size kwargs = { 'TableName': table_name, 'IndexName': index_name, 'Segment': batch, 'TotalSegments': batches, 'FilterExpression': Attr('my_attribute').eq("my_value") } response = dynamodb.scan(**kwargs)

# 将结果添加到列表中
results.extend(response['Items'])

按照指定排序键对结果进行排序

sorted_results = sorted(results, key=lambda item: item.get(sort_key))

print(sorted_results)

相关内容

热门资讯

关于!微信微乐自建房辅助工具,... 关于!微信微乐自建房辅助工具,微乐家乡麻将自建房辅助app(开挂自建房)方法1)微乐家乡麻将自建房辅...
大家学习交流!微信卡五星辅助器... 大家学习交流!微信卡五星辅助器,微乐小程序免费黑科技(开挂自建房)方法1、很好的工具软件,可以解锁游...
三分钟了解!微乐微信自建房辅助... 三分钟了解!微乐微信自建房辅助工具插件,微乐家乡麻将自建房辅助app(开挂自建房)工具1、三分钟了解...
一分钟教会你!微乐家乡麻将自建... 一分钟教会你!微乐家乡麻将自建房辅助app,微乐自建房脚本免费入口(开挂自建房)方法1、用户打开应用...
分享实测!微信微乐自建房辅助工... 分享实测!微信微乐自建房辅助工具,微乐自建房脚本免费入口(开挂自建房)器1、起透看视 微信微乐自建房...
重大通报!微乐自建房辅助工具脚... 重大通报!微乐自建房辅助工具脚本,微乐小程序免费黑科技(开挂自建房)app微乐自建房辅助工具脚本破解...
如何分辨真伪!微乐微信自建房辅... 如何分辨真伪!微乐微信自建房辅助工具插件,微乐小程序免费黑科技(开挂自建房)技巧1、微乐微信自建房辅...
我来教教你!微乐自建房辅助工具... 我来教教你!微乐自建房辅助工具挂,微乐家乡麻将自建房辅助app(开挂自建房)工具1、玩家可以在微乐家...
重大来袭!微乐自建房辅助工具神... 重大来袭!微乐自建房辅助工具神器,微乐小程序免费黑科技(开挂自建房)器1、游戏颠覆性的策略玩法,独创...
带你了解!微信卡五星辅助器,微... 带你了解!微信卡五星辅助器,微乐自建房脚本免费入口(开挂自建房)方法1、带你了解!微信卡五星辅助器,...