2016-02-26 48 views
0

我想對dynamoDB表進行全面掃描。這是我正在使用的代碼:DynamoDB掃描返回不完整的數據

private void fetchItems(AmazonDynamoDBClient client) { 
    int count = 0; 
    ScanResult result = null; 
    ScanRequest req = new ScanRequest(); 
    req.setTableName(this.tableName); 
    do { 
     if (result != null) { 
      req.setExclusiveStartKey(result.getLastEvaluatedKey()); 
     } 
     result = client.scan(req); 
     List<Map<String, AttributeValue>> rows = result.getItems(); 
     count += rows.size(); 
    } while(result.getLastEvaluatedKey() != null); 
     System.out.println("Result size: " + count); 
    } 
} 

問題是此函數返回表中的273項的207。我檢查了指標,並沒有限制請求。什麼可能是這個不完整結果的原因?

+0

如果在循環中總結result.getItems()的大小,它是否會生成相同的數字?他們都有屬性「STUDENT_ID」嗎?這是提供問題的確切代碼,還是問題的簡化版本? (如果它是一個簡化版本,你可能已經刪除了這個bug)。作爲一個說明,節流會拋出一個異常,不會給失蹤的結果。 – Krease

+0

此外,您的客戶是否設置爲使用您期望的憑證和區域?您可能在不同地區或賬戶的表格中得到不同的結果,而不是您正在驗證的結果(即:beta vs prod賬戶,或us-east-1 vs us-west-1)。 – Krease

+0

@Chris我編輯了代碼以顯示出現問題的確切代碼。至於憑證的事情,我會在這方面回覆你。 – rohan013

回答

0

問題是我正在看錯誤的地區。我正在閱讀的表格是在我看歐盟期間的NA中。感謝@Chris爲此。

+0

很高興有幫助。你的代碼看起來很好,我以前也做過同樣的事情:) – Krease