Как понять, что комплект файлов выгружен полностью

Полученный файл может быть только частью поставки. Разбираем список ожидаемых частей, сигнал готовности и проверку комплекта перед обработкой.

Три светлые папки с оранжевыми вкладками собраны в одном графитовом лотке под приподнятой прозрачной крышкой.

Первый файл ещё не означает готовую поставку

Представим условную сеть из трёх магазинов. Каждый передаёт файл продаж, а получатель собирает общий отчёт. Утром в папке появился первый файл. Он открывается, строки читаются, ошибок нет. Но два магазина ещё не закончили передачу. Если начать итоговый расчёт сразу, отчёт будет отражать только часть сети, хотя чтение доступного файла прошло успешно.

Поэтому нужно различать готовность отдельного файла и готовность всей партии. Партия — согласованный комплект для определённого периода или запуска. Важен не только ответ «что уже лежит в папке», но и другой вопрос: какие части должны были поступить? Без описания ожидаемого состава получатель не знает, является ли увиденное полным результатом или началом передачи.

Список ожидаемых частей задаёт границу

В документации Amazon Redshift описан манифест — список точных файлов, которые нужно загрузить. Для отдельных частей предусмотрено указание обязательности: отсутствие обязательного файла может завершить загрузку ошибкой. Это пример поведения конкретного инструмента. Смысл списка шире: явно назвать состав, вместо предположения, что все похожие имена относятся к одной партии.

Для нашей условной сети предложим передавать обозначение партии, период, перечень трёх магазинов и точные версии их файлов. Если одна часть не требуется, это должно быть объяснено в договорённости. Не стоит молча уменьшать ожидаемое количество до числа уже полученных файлов. Тогда проверка полноты потеряет свой смысл именно в момент задержки источника.

Готовность файла и комплекта проверяются отдельно

В руководстве Spark 4.0.1 о файловом источнике есть требование размещать файл в наблюдаемой области атомарно: обработчик должен видеть его как готовое целое. Это требование к появлению одного файла. Из него не следует, что несколько файлов одной партии автоматически появятся одновременно и будут распознаны как полный комплект.

Для нашего обмена предложим отдельный сигнал завершения поставки, который отправитель создаёт после подготовки всех согласованных частей. Получатель сопоставляет этот сигнал с обозначением партии и списком. Само слово «готово» не заменяет проверку: файлы должны быть доступны и соответствовать указанным версиям. Конкретный способ публикации сигнала выбирается под возможности хранилища и процесса.

Количество без состава может обмануть

Допустим, в папке три файла. По числу они совпадают с ожиданием, но два относятся к одному магазину, а третий — ко второму. Третьего магазина нет. Это условный пример того, почему нужно проверять перечень частей, а не только количество. Также важно исключить вчерашний файл с похожим названием и повторную версию уже полученной части.

Полезно сохранить результат проверки партии: какие части подтверждены, какие отсутствуют и какие лишние. Если один магазин не работал, пустая поставка может быть допустимой, но её нужно отличать от отсутствующего ответа. В нашем примере это оформляется явным подтверждением источника по согласованным правилам. Получатель не должен угадывать отсутствие продаж по тишине.

Целостность содержимого — другой вопрос

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

После подтверждения готовности для нашего отчёта ещё нужна сверка источника и результата: правильно ли учтены период, суммы и исключения? Полный комплект способен содержать ошибочные исходные сведения. Поэтому сигнал завершения означает готовность согласованной поставки к следующему этапу, а не автоматическое подтверждение достоверности всех показателей.

Договоритесь о задержке и повторе

Если часть не поступила, заранее согласуйте, кто выясняет причину и допустим ли явно помеченный предварительный результат. При повторной передаче важно понимать, заменяется ли прежняя партия и как избежать повторного учёта. Для дальнейшего изучения таких процессов посмотрите программу Data Engineer для начинающих. Начать можно с описания одной партии обычными словами: состав, готовность, исключения и ответственное лицо.

Data Engineer для начинающих
Курс
Доступ сразу
Data Engineer для начинающих

Освойте Data Engineering с нуля: научитесь собирать, хранить и обрабатывать данные. Практика на каждом этапе — опыт не нужен.

С нуля до junior
Теория и практика
Диплом по окончании
12 990
₽/мес
УЗНАТЬ ПОДРОБНЕЕ

Источники

Читайте также

Обучить команду или нанять специалиста по данным: как выбрать
60

Обучить команду или нанять специалиста по данным: как выбрать

Как руководителю определить, какие навыки развивать внутри команды, когда нужна новая роль и почему обучение и найм часто дополняют друг друга.
Вертикальное и горизонтальное масштабирование данных: в чём разница
62

Вертикальное и горизонтальное масштабирование данных: в чём разница

Когда системе добавляют мощность одного сервера, когда делят работу между несколькими и почему увеличение ресурсов само по себе не решает любую проблему.
Журнал изменений данных: как выяснить, кто и когда изменил набор
59

Журнал изменений данных: как выяснить, кто и когда изменил набор

Что можно узнать из журнала действий с данными, как он помогает разбирать ошибки и почему его записи не показывают всю историю сами по себе.

Занятия проходят
в Нова Дата СДО

Вебинары, практика и общение с преподавателем — в одном окне браузера.

Посмотреть интерфейс платформы
Календарь обучения в Нова Дата СДО
Курсы студента в Нова Дата СДО
Редактор кода для практики в Нова Дата СДО
Вебинары и расписание Ваши курсы Код в браузере
Нова Дата СДО — в реестре российского ПОРеестровая запись № 34931
Заявка отправлена
Отправим вам подборку курсов в течение 5 минут. С вами также свяжется наш специалист и даст карьерную консультацию.
Персональный промокод
На курс «Инженер по парсингу данных»
Введите код при оплате, чтобы применить скидку к программе.