Мы используем команды UNLOAD для выполнения некоторого преобразования внешних таблиц на основе s3 и sh публикации данных в другую корзину s3 в формате PARQUET.
Я использую опцию ALLOWOVERWRITE в операции выгрузки для замены файлов если они уже существуют. Это отлично работает в большинстве случаев, но иногда вставляет повторяющиеся файлы для одних и тех же данных, что заставляет внешнюю таблицу показывать повторяющиеся числа.
Например, если паркет в разделе 0000_part_00.parquet, который содержит полные данные . При следующем запуске ожидается, что unload перезапишет этот файл, но вместо этого вставит новый файл 0000_part_01.parquet, который удвоит общий вывод.
Это снова не повторится, если я просто очищу весь раздел и перезапущу его снова. Это несоответствие делает нашу систему ненадежной.
unload (<simple select statement>)
to 's3://<s3 bucket>/<prefix>/'
iam_role '<iam-role>' allowoverwrite
PARQUET
PARTITION BY (partition_col1, partition_col2);
Спасибо.