数据突然停止从Dynamo DB写入csv文件

时间:2014-11-09 06:50:01

标签: java csv amazon-dynamodb export-to-csv filewriter

我已成功将数据集加载到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();
}
}

1 个答案:

答案 0 :(得分:0)

Scan是一个分页API,因此您必须通过将LastEvaluatedKey作为ExclusiveStartKey传入来重复调用它。更多详细信息位于developer guideapi docs

DynamoDBMapper sdk和文档SDK(两者都附带aws-java-sdk)提供了一些自动分页API,以便您可以将您的表视为Iterable而不是自己分页。有一个使用低级Java SDK的例子就像你在this section of the developer guide中进行分页一样。