Конфигурация автоматического захвата Snowpipe выглядит так, как будто запускает все трубы

Я новичок в хранилище данных Snowflake и хочу загружать данные с помощью snowpipe и автоматического захвата с внешнего этапа (ведро S3), которое содержит несколько папок (по одной для каждой базы данных), а внутри этих папок есть несколько файлов по 1 для каждой таблицы. Файлы в разных папках будут обновляться в разное время, и в настоящее время я использую автоматический захват, чтобы перейти с S3 на SQS и на Snowpipe.

Мой пример ведра S3 настроен следующим образом:

myS3bucket.s3amazonaws.com
    /db1 
       account.csv
       product.csv
    /db2
        invoice.csv
        employees.csv

В настоящее время я понимаю, что я бы создал один канал для каждой таблицы, поэтому account.csv будет относиться к 1 каналу, который будет заполнять таблицу учетных записей, а затем product.csv будет относиться к другому каналу для заполнения таблицы продуктов и т. Д.

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

Мои вопросы:

  • Это правильно, что все каналы запускаются, когда я добавляю новый файл? Нужно ли мне настраивать db1 и db2 как разные внешние этапы, чтобы, если я добавлю файл в папку db1, будут прочитаны только каналы, связанные с этим внешним этапом?
  • Я читал, что SNS можно использовать, но не знаю, как это работает для Snowpipe. Отправляет ли S3 сообщение, чтобы он мог решить, какой канал вызвать, и передает ли сообщение этому каналу?
  • Есть ли лучший подход к этому, чем то, что я использую выше?

Спасибо за любую помощь

2 ответа

При использовании Auto-Ingest Snowflake создает SQS для каждой учетной записи Snowflake, все уведомления от S3 поступают в тот же SQS, а затем передаются в каждый канал в зависимости от определения этапа каждого канала (корзины и пути). Если этапы пересекаются в путях, SQS потенциально передаст уведомление нескольким каналам.

См. Раздел "Важно" в разделе "Создание канала с включенной автоматической загрузкой" в документации "Автоматизация Snowpipe для Amazon S3".

https://docs.snowflake.com/en/user-guide/data-load-snowpipe-auto-s3.html

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

если у вас есть три канала с тремя этапами, и эти этапы указывают на эти папки:

  • 1: blahblah
  • 2: blahblah/db1
  • 3: blahblah/db2

затем, когда файл создается в blahblah/db1 он запустит трубы 1 и 2, но не 3.

Другие вопросы по тегам