Как проверить результаты загрузки данных из aws S3 в Snowflake - PullRequest
0 голосов
/ 05 августа 2020

Может ли кто-нибудь посоветовать мне, как я могу проверить результаты загрузки данных из S3 в Snowflake.

Процесс загрузки ориентирован на пакетную обработку, когда я перетаскиваю файлы в корзину S3, откуда в Snowflake мы вставлять данные в постоянные таблицы, запрашивая этапы чтения из файлов.

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

Я борюсь как я могу завершить последний шаг?

Я вижу несколько вариантов в уме, но не уверен, насколько они хороши. Вариант 1 - внешняя функция в Snowflake, которая вызовет событие в AWS, которое вызовет лямбда-функция для перемещения файла. Я думаю, что это немного ненадежно

вариант 2 - записать результаты загрузки в таблицу аудита в Snowflake, затем из aws опросить эту таблицу и переместить все файлы, перечисленные в ней как обработанные, в архив - может работать, но немного старая школа, также не в реальном времени, поэтому потребуются дополнительные запросы на стороне Snowflake для предотвращения дублирования

вариант 3 - записать файл прямо в папку сцены и архива и удалить его из Snowflake с помощью опции удаления загрузки команда - не идеальная и немного обходной-i sh.

Заранее большое спасибо. Думаю, не нужно говорить, что я новичок в Snowflake: -)

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

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

Я использовал Python для создания дампа CSV из SQLSERVER с использованием BCP на сервере linux. Затем структура python разделяет файл и сжимает его с помощью команд LINUX SPLIT и GZIP. Опубликуйте это, он выполняет «ПОМЕЩЕНИЕ» на внутреннюю сцену снежинки. Я проверяю вывод PUT и, если он успешен, перемещаю файл в папку архива на LINUX. У нас есть пакетная программа, которая запускается еженедельно для очистки папки архива.

0 голосов
/ 05 августа 2020

Все эти варианты на самом деле жизнеспособны. Все зависит от ваших предпочтений. Одно замечание по поводу варианта 2. Вам не нужно создавать таблицу аудита. Вы можете получить доступ к истории загрузки определенной c таблицы или таблиц прямо в Snowflake. https://docs.snowflake.com/en/sql-reference/functions/copy_history.html

...