[英]DynamoDB Enhanced Client Error: Unable to unmarshall response
我是 DynamoDB 的新手,正在尝试编写一些 Java 代码来使用增强的 DynamoDB 客户端对具有 3 个线程的表进行并行扫描。 我正在使用 AWS Java SDK v 2.17.85。
我的代码在启动后不久在每个线程中抛出以下错误:无法解组响应(null)。 当我在单个线程中进行扫描时,一切正常。 我在文档中看到的所有示例似乎都是针对旧客户的。 我很感谢这里的专家提供的一些见解。 谢谢。
private static class ScanSegmentTask implements Runnable {
private String tableName;
private int itemLimit;
private int totalSegments;
private int segment;
private long scannedItemCount = 0;
public ScanSegmentTask(String tableName, int itemLimit, int totalSegments, int seg) {
this.tableName = tableName;
this.itemLimit = itemLimit;
this.totalSegments = totalSegments;
this.segment = seg;
}
@Override
public void run() {
System.out.println("Scanning " + tableName + " segment " + segment + " out of " + totalSegments
+ " segments " + itemLimit + " items at a time...");
DynamoDbTable<TfProdHmiBean> hmiTable = enhancedClient.table(tableName, TableSchema.fromBean(TfProdHmiBean.class));
try {
ScanEnhancedRequest spec = ScanEnhancedRequest.builder().limit(itemLimit).segment(segment).totalSegments(totalSegments).build();
Iterator<TfProdHmiBean> results = hmiTable.scan(spec).items().iterator();
while (results.hasNext()) {
scannedItemCount++;
if (scannedItemCount % 1000000 == 0) {
System.out.println("Scanned " + scannedItemCount + " items from segment " + segment + " out of " + totalSegments);
}
results.next();
}
}
catch (Exception e) {
System.err.println("Error: " + e.getMessage() + " in segment " + segment);
}
finally {
System.out.println("Scanned " + scannedItemCount + " items from segment " + segment + " out of "
+ totalSegments + " of " + tableName);
}
}
}
看来问题出在我提供给 SDK 以进行映射的 bean class 上。
我把电话从
DynamoDbTable hmiTable = enhancedClient.table(tableName, TableSchema.fromBean(TfProdHmiBean.class));
至
DynamoDbTable hmiTable = enhancedClient.table(tableName, TableSchema.fromClas(TfProdHmiBean.class));
然后我用 @DynamoDbAttribute(value="dynamo field name") 用 DynamoDB 中的源字段注释了每个字段的 get 方法
这行得通。 现在这对我的目的来说已经足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.