Java 使用DynamoMapper和类注释创建具有全局二级索引的表
我目前正在使用Java dynamoMapper创建和查询表。尝试创建具有全局二级索引的表时,我遇到以下错误 No provisioned throughput specified for the global secondary index 用于创建表的类如下所示Java 使用DynamoMapper和类注释创建具有全局二级索引的表,java,amazon-web-services,amazon,amazon-dynamodb,Java,Amazon Web Services,Amazon,Amazon Dynamodb,我目前正在使用Java dynamoMapper创建和查询表。尝试创建具有全局二级索引的表时,我遇到以下错误 No provisioned throughput specified for the global secondary index 用于创建表的类如下所示 public boolean createTable() { try { DynamoDBMapper mapper = new DynamoDBMapper(client); CreateTableRequest tableReq
public boolean createTable() {
try {
DynamoDBMapper mapper = new DynamoDBMapper(client);
CreateTableRequest tableRequest = mapper.generateCreateTableRequest(entityClass); // 1
tableRequest.setProvisionedThroughput(new ProvisionedThroughput(1000L, 1500L)); // 2
client.createTable(tableRequest); // 3
} catch (Error e) {
e.printStackTrace();
return false;
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
我在亚马逊网站上搜索了其他注释和配置,但没有找到DynamoMapper。是否仍然可以使用ORM执行此操作,或者我必须使用较低级别的API手动创建?您需要在将生成的每个二级索引表上设置已配置的吞吐量
tableRequest.getGlobalSecondaryIndexes().get(0).setProvisionedThroughput(new ProvisionedThroughput(10l, 10l));
扩展到@Jeremy的答案 如果您有多个GSI,那么您可以按照下面的方式进行操作。此外,如果ProvisionedThroughput对象的值相同,则不需要始终创建它们
final ProvisionedThroughput provisionedThroughput = new ProvisionedThroughput(5L, 5L);
createRequest.setProvisionedThroughput(provisionedThroughput);
createRequest.getGlobalSecondaryIndexes().forEach(v -> v.setProvisionedThroughput(provisionedThroughput));
final ProvisionedThroughput provisionedThroughput = new ProvisionedThroughput(5L, 5L);
createRequest.setProvisionedThroughput(provisionedThroughput);
createRequest.getGlobalSecondaryIndexes().forEach(v -> v.setProvisionedThroughput(provisionedThroughput));