【发布时间】:2022-04-09 02:47:53
【问题描述】:
我是 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);
}
}
}
【问题讨论】:
标签: java amazon-web-services amazon-dynamodb