Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 扫描大容量10gb的Amazon DynamoDB数据_Amazon Web Services_Amazon Dynamodb_Boto3_Large Data - Fatal编程技术网

Amazon web services 扫描大容量10gb的Amazon DynamoDB数据

Amazon web services 扫描大容量10gb的Amazon DynamoDB数据,amazon-web-services,amazon-dynamodb,boto3,large-data,Amazon Web Services,Amazon Dynamodb,Boto3,Large Data,下面的代码适用于我,但1个API请求需要19分钟才能返回结果。如能获得最佳结果,将不胜感激。我不想去段,因为这样我将不得不做线程管理 dynamodb=boto3.resource('dynamodb',region_name='us-west-2',endpoint_url='http://localhost:8000") table=dynamodb.table('Movies') fe=键(‘年’)。介于(1950年和1959年)之间 pe=“#年、头衔、信息评级” #表达式属性名称仅适

下面的代码适用于我,但1个API请求需要19分钟才能返回结果。如能获得最佳结果,将不胜感激。我不想去段,因为这样我将不得不做线程管理

dynamodb=boto3.resource('dynamodb',region_name='us-west-2',endpoint_url='http://localhost:8000")
table=dynamodb.table('Movies')
fe=键(‘年’)。介于(1950年和1959年)之间
pe=“#年、头衔、信息评级”
#表达式属性名称仅适用于投影表达式。
ean={“年”:“年”}
esk=无
响应=table.scan(
FilterExpression=fe,
ProjectionExpression=pe,
表达式attributeNames=ean
)
对于响应['Items']中的i:
打印(json.dumps(i,cls=DecimalEncoder))
//只要LastEvaluatedKey处于响应状态,就意味着查询中仍有与数据相关的项
响应中的“LastEvaluatedKey”时:
响应=table.scan(
ProjectionExpression=pe,
FilterExpression=fe,
表达式attributeNames=ean,
ExclusiveStartKey=响应['LastEvaluatedKey']
)
对于响应['Items']中的i:

打印(json.dumps(i,cls=DecimalEncoder))
不幸的是,
扫描本质上很慢。除了重新设计表以优化此访问模式之外,没有其他方法可以在代码级别进行优化。

因为它正在搜索所有分区,所以
扫描操作可能非常缓慢。您将无法像处理关系数据库时那样“调优”此查询


为了更好地帮助您,我需要更多地了解您的访问模式(按年份获取电影?)以及您的表当前的外观(分区键/排序键、其他属性等)。

DynamoDb表中的键是什么?如果你的用例一般会在一年中搜索,考虑使用一年作为一种密钥。