我已成功将数据集加载到Dynamo DB。然后我想从dynamo DB读取数据并加载到.csv文件中。使用weka的这个文件来开发集群。不幸的是,只有少数数据从Dynamo DB中读取并加载到.csv文件中。以下是从Dynamo DB读取数据的片段。我的Dynamo DB中有2201条记录,但它突然停止在1986年的记录和3列中写入文件。我已经尝试了所有可能的解决方案,我在网上找到了云,但无法解决它。请有人帮助我。
//从dynamobb扫描数据
ScanRequest scanRequest = new ScanRequest().withTableName(tablename[2]);
ScanResult result = client.scan(scanRequest);
for (Map<String, AttributeValue> item : result.getItems()){
printItem(item,writer);
}
//将数据附加到空CSV文件
private static void printItem(Map<String, AttributeValue> attributeList,FileWriter writer) {
int i=1;
System.out.println("Inside printItem");
try{
int k=1;
for (Map.Entry<String, AttributeValue> item : attributeList.entrySet()) {
AttributeValue value = item.getValue();
String valueName= value.getS();
writer.append(valueName);
if(k<=4){
writer.append(',');
}
++i;
++k;
}
writer.append('\n');
++count;
}
catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
Scan是一个分页API,因此您必须通过将LastEvaluatedKey作为ExclusiveStartKey传入来重复调用它。更多详细信息位于developer guide和api docs。
DynamoDBMapper sdk和文档SDK(两者都附带aws-java-sdk)提供了一些自动分页API,以便您可以将您的表视为Iterable而不是自己分页。有一个使用低级Java SDK的例子就像你在this section of the developer guide中进行分页一样。