Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.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
Java 使用DynamoMapper和类注释创建具有全局二级索引的表_Java_Amazon Web Services_Amazon_Amazon Dynamodb - Fatal编程技术网

Java 使用DynamoMapper和类注释创建具有全局二级索引的表

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

我目前正在使用Java dynamoMapper创建和查询表。尝试创建具有全局二级索引的表时,我遇到以下错误

No provisioned throughput specified for the global secondary index 用于创建表的类如下所示

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));