У меня есть таблица в Amazon Redshift, и мой вариант использования - ежедневно выгружать эту таблицу в разделе номеров строк в несколько расположений файлов S3. Файлы из расположений S3 будут загружены в DynamoDB с помощью S3DataNode Datapipeline с параметрами DirectoryPath, которые указывают на местоположения S3, обновленные на шаге выше.
unload('select * from test_table where (row_num%100) >= 0 and (row_num%100)<=30')
to 's3://location1/file_'
iam_role 'arn:aws:iam::xxxxxxxxxx'
parallel off
ALLOWOVERWRITE;
unload('select * from test_table where (row_num%100) >= 31 and (row_num%100)<=100')
to 's3://location2/file_'
iam_role 'arn:aws:iam::xxxxxxxxxx'
parallel off
ALLOWOVERWRITE;
Day1: в Redshift и он создал file_000, file_001, file_002 и file_003 в одном из местоположений S3 (скажем, location2).
Day2: в Redshift не так много строк, и он создал file_000. Из-за опции ALLOWOVERWRITE
, которую я использую при выгрузке на S3, происходит перезапись только file_000. но по-прежнему существуют другие файлы (file_001, file_002, file_003, которые были созданы в Day1), и это приводит к обновлению уже существующих элементов с files_002 и file_003 до DynamoDB.
Как мне копировать только файлы перезаписи в DynamoDB?
(Примечание: если я использую МАНИФЕСТ при выгрузке, может ли узел данных S3 DataNode копировать только файлы, созданные манифестом, в DynamoDB?)