我正在運行一個golang做表parallel scan的程序。dynamodb我的 ScanInput 對象是:params = &dynamodb.ScanInput{ TableName: aws.String(tableName), ExclusiveStartKey: lastEvalKey, Segment: aws.Int64(segment), TotalSegments: aws.Int64(TOTAL_SEG), }segment除了第一個,我得到了所有錯誤。例如 if totalsegmentis 4 than 3 將返回以下錯誤:ValidationException: The provided starting key is invalid: Invalid ExclusiveStartKey. Please use ExclusiveStartKey with correct Segment. TotalSegments: 4 Segment: 2我通過調試檢查有錯誤LastEvaluatedKey的段與沒有拋出錯誤的段相同。我正在為每個段調用在等待組中作為 goroutine 掃描的函數。var wg sync.WaitGroup wg.Add(int(TOTAL_SEG)) for i := 0; i < int(TOTAL_SEG); i++ { go func(i int) { Scan(int64(i)) wg.Done() }(i) } wg.Wait()任何人都可以指導什么是問題。提前致謝。
1 回答

慕哥9229398
TA貢獻1877條經驗 獲得超6個贊
解決問題。問題是對于第一次掃描的每個段,我都ExclusiveStartKey
以 nil 傳遞,因為每個段的起點都相同,并且它返回相同的LastEvaluatedKey
.
對于第一次掃描,我沒有為每個分段傳遞 ExclusiveStartKey,對于我在之前的掃描中segment
使用的每個分段的后續掃描。LastEvaluatedKey
ExclusiveStartKey
在仔細檢查https://amazon-dynamodb-labs.com/design-patterns/ex2scan/step2.html上的示例后,我解決了這個問題。
- 1 回答
- 0 關注
- 152 瀏覽
添加回答
舉報
0/150
提交
取消