S3 избегать загрузки дубликатов файлов - PullRequest
0 голосов
/ 03 октября 2018

У меня следующий рабочий процесс.Мне нужно идентифицировать дубликаты файлов на S3, чтобы избежать дубликатов в моем месте назначения (Redshift).

  • Загружать файлы в S3 каждые 4 часа с FTP-сервера (Структура хранения файлов: год / месяц / дата /час / минута / имя файла)
  • Загрузка S3 в Redshift после извлечения всех файлов (за этот интервал)

Это непрерывное задание, которое будет выполняться каждые 4 часа.

Проблема:

Иногда на S3 присутствуют файлы с одинаковым содержимым, но разными именами.Эти файлы могут принадлежать разным интервалам или разным дням.Например, если файл прибывает, скажем, one.csv 1 октября 2018 года и содержит 1,2,3,4 в качестве содержимого, то возможно, что 10 октября 2018 года файл может прийти с тем же содержанием 1,2,3,4, но с другимимя файла.Я хочу избежать загрузки этого файла в S3, если содержимое одинаково.Я знаю, что могу использовать файловый хеш, чтобы идентифицировать два идентичных файла, но моя проблема в том, как добиться этого на S3 и так же с таким большим количеством файлов.Какой будет наилучший подход для продолжения?

В сущности, я хочу избежать загрузки данных в S3, который уже присутствует.

1 Ответ

0 голосов
/ 03 октября 2018

Вы можете добавить другую таблицу в redshift (или где-нибудь еще, например, MySQL или DynamodB), которая будет содержать хэш Etag / md5 загруженных файлов.

Возможно, у вас уже есть скрипт, который запускается каждые 4 часа и загружает данные в красное смещение.В этом же сценарии после успешной загрузки данных в красное смещение;просто сделайте запись в этой таблице.Кроме того, установите флажок в этом же сценарии (из этой новой таблицы) перед загрузкой данных в Redshift.

Вы должны убедиться, что вы загружаете эту новую таблицу со всеми Etags файлов, которые вы уже загрузили в красное смещение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...