File tree Expand file tree Collapse file tree 1 file changed +21
-12
lines changed
seatunnel-connectors-v2/connector-amazondynamodb/src/main/java/org/apache/seatunnel/connectors/seatunnel/amazondynamodb/source Expand file tree Collapse file tree 1 file changed +21
-12
lines changed Original file line number Diff line number Diff line change 3131import software .amazon .awssdk .auth .credentials .StaticCredentialsProvider ;
3232import software .amazon .awssdk .regions .Region ;
3333import software .amazon .awssdk .services .dynamodb .DynamoDbClient ;
34+ import software .amazon .awssdk .services .dynamodb .model .AttributeValue ;
3435import software .amazon .awssdk .services .dynamodb .model .ScanRequest ;
3536import software .amazon .awssdk .services .dynamodb .model .ScanResponse ;
3637
3738import java .io .IOException ;
3839import java .net .URI ;
40+ import java .util .Map ;
3941
4042@ Slf4j
4143public class AmazonDynamoDBSourceReader extends AbstractSingleSplitReader <SeaTunnelRow > {
@@ -78,18 +80,25 @@ public void close() throws IOException {
7880 @ Override
7981 @ SuppressWarnings ("magicnumber" )
8082 public void pollNext (Collector <SeaTunnelRow > output ) throws Exception {
81- ScanResponse scan =
82- dynamoDbClient .scan (
83- ScanRequest .builder ()
84- .tableName (amazondynamodbSourceOptions .getTable ())
85- .build ());
86- if (scan .hasItems ()) {
87- scan .items ()
88- .forEach (
89- item -> {
90- output .collect (seaTunnelRowDeserializer .deserialize (item ));
91- });
92- }
83+ Map <String , AttributeValue > lastKeyEvaluated = null ;
84+
85+ ScanResponse scan ;
86+ do {
87+ scan =
88+ dynamoDbClient .scan (
89+ ScanRequest .builder ()
90+ .tableName (amazondynamodbSourceOptions .getTable ())
91+ .exclusiveStartKey (lastKeyEvaluated )
92+ .build ());
93+ if (scan .hasItems ()) {
94+ scan .items ()
95+ .forEach (
96+ item -> {
97+ output .collect (seaTunnelRowDeserializer .deserialize (item ));
98+ });
99+ }
100+ lastKeyEvaluated = scan .lastEvaluatedKey ();
101+ } while (lastKeyEvaluated != null && !lastKeyEvaluated .isEmpty ());
93102 context .signalNoMoreElement ();
94103 }
95104}
You can’t perform that action at this time.
0 commit comments