2014-11-09 92 views
-1

我已成功將數據集加載到Dynamo DB。然後我想從發電機數據庫讀取數據並加載到.csv文件中。 weka使用這個文件來開發集羣。不幸的是,從發電機DB讀取的只有少量數據被加載到.csv文件中。以下是從Dynamo DB讀取數據的片段。我的Dynamo數據庫中有2201條記錄,但它突然停止寫入1986年記錄和3列中的文件。我試過了雲在網上找到的所有可能的解決方案,但無法解決它。請有人請幫助我。數據突然停止從Dynamo DB寫入csv文件

//從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

您確定首個獲取完整數據集嗎? – 2014-11-09 06:57:29

+0

我剛查過。它沒有讀取整個數據。所以從Dynamo DB讀取他的聲明是錯誤的。 – kirti 2014-11-09 07:12:09

+0

你應該看到哪些記錄丟失並使用它來找出原因。 – 2014-11-09 07:47:16

回答

0

掃描是一個分頁API,所以你必須保持調用它反覆作爲ExclusiveStartKey傳入LastEvaluatedKey。更多詳情請見developer guideapi docs

DynamoDBMapper sdk和文檔SDK(均帶有aws-java-sdk)提供了一些自動分頁API,因此您可以將表格視爲Iterable而不是自己分頁。有一個使用低級Java SDK的例子,就像您在this section of the developer guide中做分頁一樣。

+0

此外,如果您希望將表格導出爲CSV文件,您可能會對EMR集成感興趣,即使按計劃使用數據管道,也可以將表格導出到S3中的CSV文件:http:// docs .aws.amazon.com/amazondynamodb /最新/ developerguide/OtherServices.html – 2014-11-09 18:20:07