Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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检查dynamodb中的项目?_Java_Amazon Web Services_Amazon Dynamodb - Fatal编程技术网

如何使用java检查dynamodb中的项目?

如何使用java检查dynamodb中的项目?,java,amazon-web-services,amazon-dynamodb,Java,Amazon Web Services,Amazon Dynamodb,嗨,我正在尝试创建一个java程序,用于检查amazon dynamodb中存在的值。 实际上,我正试图为一家零售店编写一个java程序,该程序检查某种产品(值)在dynamodb中,返回存储中存在的数量。我已经在dynamodb中创建了一个表,还使用了扫描api来检索项目。但是现在我想搜索某个值是否存在,并返回存在的数量。 如果有人能帮我写一段话,那将非常有帮助。 附言:我是java新手 感谢为表消费者表提供了以下数据建模,其中leaseKey作为索引字段 { "checkpoint":

嗨,我正在尝试创建一个java程序,用于检查amazon dynamodb中存在的值。 实际上,我正试图为一家零售店编写一个java程序,该程序检查某种产品(值)在dynamodb中,返回存储中存在的数量。我已经在dynamodb中创建了一个表,还使用了扫描api来检索项目。但是现在我想搜索某个值是否存在,并返回存在的数量。 如果有人能帮我写一段话,那将非常有帮助。 附言:我是java新手


感谢为表
消费者表
提供了以下数据建模,其中
leaseKey
作为索引字段

{
  "checkpoint": "49572533067729099438069946639296561054199125138133221378",
  "checkpointSubSequenceNumber": 0,
  "leaseCounter": 1372794,
  "leaseKey": "shardId-000000000000",
  "leaseOwner": "pout_172.21.63.243",
  "ownerSwitchesSinceCheckpoint": 0
}
通过索引字段查询AmazonDynamodB的JavaAPI将是

import com.amazonaws.ClientConfiguration;

import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.retry.v2.RetryPolicy;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;

public AmazonDynamoDB getDbConnection() {
    AmazonDynamoDBClient dynamoDB = new AmazonDynamoDBClient( new ProfileCredentialsProvider("your-aws-auth-profile_in_~/.aws/credentials"));

    dynamoDB.setRegion(Region.getRegion(Regions.US_WEST_2))

    return dynamoDB;
}

public void getData() {

    DynamoDB dynamoDB = new DynamoDB(getDbConnection());
    Table consumerOffsetTable = dynamoDB.getTable("ConsumerTable");

    Optional.ofNullable(consumerOffsetTable.getItem("leaseKey", "shardId-000000000000")).ifPresent(item -> {

        Map<String, Object> itemMap = item.asMap();

        System.out.println(itemMap.get("leaseKey").toString() + " -> " + itemMap.get("checkpoint").toString());

    });

}
<dependency>
  <groupId>com.amazonaws</groupId>
  <artifactId>aws-java-sdk-dynamodb</artifactId>
  <version>1.11.115</version>
</dependency>
import com.amazonaws.ClientConfiguration;
导入com.amazonaws.regions.Region;
导入com.amazonaws.regions.regions;
导入com.amazonaws.retry.v2.RetryPolicy;
导入com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
导入com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
导入com.amazonaws.services.dynamodbv2.document.DynamoDB;
公共AmazonDynamoDB getDbConnection(){
AmazonDynamoDBClient dynamoDB=新的AmazonDynamoDBClient(新的ProfileCredentialsProvider(“your-aws-auth-profile_in_~/.aws/credentials”);
dynamoDB.setRegion(Region.getRegion(Regions.US\u WEST\u 2))
返回发电机B;
}
public void getData(){
DynamoDB DynamoDB=新的DynamoDB(getDbConnection());
表consumerofsettable=dynamoDB.getTable(“ConsumerTable”);
可选.ofNullable(consumerofsettable.getItem(“leaseKey”,“shardId-000000000000”))。如果存在(item->{
Map itemMap=item.asMap();
System.out.println(itemma.get(“leaseKey”).toString()+“->”+itemMap.get(“checkpoint”).toString());
});
}
Maven依赖将是

import com.amazonaws.ClientConfiguration;

import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.retry.v2.RetryPolicy;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;

public AmazonDynamoDB getDbConnection() {
    AmazonDynamoDBClient dynamoDB = new AmazonDynamoDBClient( new ProfileCredentialsProvider("your-aws-auth-profile_in_~/.aws/credentials"));

    dynamoDB.setRegion(Region.getRegion(Regions.US_WEST_2))

    return dynamoDB;
}

public void getData() {

    DynamoDB dynamoDB = new DynamoDB(getDbConnection());
    Table consumerOffsetTable = dynamoDB.getTable("ConsumerTable");

    Optional.ofNullable(consumerOffsetTable.getItem("leaseKey", "shardId-000000000000")).ifPresent(item -> {

        Map<String, Object> itemMap = item.asMap();

        System.out.println(itemMap.get("leaseKey").toString() + " -> " + itemMap.get("checkpoint").toString());

    });

}
<dependency>
  <groupId>com.amazonaws</groupId>
  <artifactId>aws-java-sdk-dynamodb</artifactId>
  <version>1.11.115</version>
</dependency>

亚马逊网站

用于Dynamodb API


您可能也想发布您的表架构?不,我们只想检查一个值并返回当前的数量……请参见我在回答中的示例。您可能只想投影
value
。您好,谢谢您的响应,但是我在getTable()方法中遇到了一个错误。(类型对象的getTable(String)方法未定义).Eclipse建议向其添加cast,但它无法解决此问题。长期以来一直面临此问题可能是因为
import com.amazonaws.services.dynamodbv2.document.DynamoDB不在导入中。你能补充一下吗?完成了!!很久以前就面临这个问题。Eclipse建议使用所有方法,如geItems()等,但没有显示getTable()方法。当
DynamoDB
实例未正确初始化时,可能会发生这种情况。是行
DynamoDB DynamoDB=newdynamodb(getDbConnection())绿色还是红色?嗨,普拉雅格,对不起,我没有跟你说得更清楚…我正在使用aws lambda部署这个程序,以便它在我的alexa上运行,因此我想我不需要getDBConnection()方法。。。。