В тази публикация ще обсъдим една уникална функция на Snowflake, т.е. Snowpipe, която позволява зареждане на данни от файловете веднага щом са налични на етап. Това означава, че можете да зареждате данни от файлове в микропартиди, като ги правите достъпни за потребителите в рамките на минути, вместо ръчно да изпълнявате инструкциите за копиране по график за зареждане на по-големи партиди.

Тази публикация ви предоставя инструкции за задействане на автоматично зареждане на данни на Snowpipe с помощта на известия на Amazon SQS за кофа S3. Ще обсъдим необходимите стъпки за автоматизиране с помощта на Cloud Messaging System.

Вижте изображението по-долу:

Стъпка 1:Това описва как да конфигурирате обект за местоположение за интегриране на хранилище, за да делегирате удостоверяването за съхранение в облак на Snowflake Identity & Access Management. Тъй като Snowpipe извлича файловете с данни от това място за съхранение и временно ги поставя на опашка, преди да ги зареди в целевата таблица. Обясних тази настройка в предишната си публикация по-подробно.

Стъпка 2: Поддържат се следните опции, използващи Amazon SQS:

Опция 1: Ново известие за събитие S3: Създайте известие за събитие за целевия път в контейнера S3. Това известие информира Snowpipe чрез SQS опашка, когато файловете са готови за зареждане. Това е най-често срещаният вариант.

Опция 2: Известие за съществуващо събитие: Настройте Amazon SNS като разпространител, за да споделяте известията за даден път, т.е. абонати като SQS опашки или AWS Lambda услуги. Известие за събитие S3, публикувано от SNS, информира първия Snowpipe чрез SQS опашка, когато файловете са готови за зареждане.

Ще обсъдим Вариант 1 — Ново известие за събитие S3 за автоматизиране на Snowpipe.

Нека започнем стъпките една по една.

Стъпка 1 — Създаване на етап: Обясних тази настройка в моята предишна Публикация по-подробно.

Стъпка 2— Създаване на тръба:Нека създадем тръба с помощта на createcommand. Каналът дефинира командата copy into table, използвана от Snowpipe за зареждане на данни от опашката за приемане в целевата таблица. Параметър auto_ingest=true указва да се четат известия за събития, изпратени от контейнер S3 до SQS опашка, когато нови данни са готови за зареждане.

Стъпка 3— Конфигуриране на сигурността: За всеки потребител, който ще изпълнява непрекъснатите зареждания на данни с помощта на Snowpipe, трябва да бъдат предоставени достатъчни привилегии за контрол на достъпа до обектите. Според документацията само администратори по сигурността, т.е. потребители с роля на администратор по сигурността или по-висока, или друга роля с привилегия за Създаване на роля в акаунта и глобално разрешение за управление привилегия, може също да създава роли и да предоставя привилегии. Използвам ролята на администратор на акаунт за тази демонстрация.

Стъпка 4— Конфигуриране на известия за събития:Конфигурирайте това за вашия S3 контейнер, за да уведомява Snowpipe, когато има нови данни за зареждане. Функцията за автоматично приемане разчита на SQS опашки, за да достави известията за събития от S3 до Snowpipe. Моля, обърнете внимание на ARN на SQS опашката за етапа от колоната notification_channel, след като изпълните командата show pipes. Копирайте ARN в бележник.

Snowpipe с автоматично поглъщане вече е конфигуриран! Когато нови файлове с данни се добавят към кофата S3, известието за събитие информира Snowpipe да ги зареди в целевата таблица, дефинирана в канала.

Тестване: Нека качим JSON файл в контейнера S3. Ще изчака известно време. Данните ще бъдат заредени автоматично в целевата таблица.

Заключение

Благодаря ви, че прочетохте, надявам се, че този блог ще ви помогне да разберете непрекъснатото автоматизиране на поглъщането на данни с помощта на Snowpipe в инфраструктурата на AWS. Горещо препоръчвам, моля, прегледайте моята Публикация за това как да конфигурирате интеграция на външно хранилище с AWS S3. Можете да се свържете с мен в случай на още въпроси, които имате, в моя Twitter handle или моя LinkedIn или оставете коментар по-долу. Късмет!

Препратки:Връзка към онлайн документацията на Snowflake.

Повече съдържание в plainenglish.io