Конфигурация автоматического захвата Snowpipe выглядит так, как будто запускает все трубы - PullRequest
0 голосов
/ 10 июля 2020

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

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

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

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

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

Мои вопросы:

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

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

Ответы [ 2 ]

1 голос
/ 10 июля 2020

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

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

https://docs.snowflake.com/en/user-guide/data-load-snowpipe-auto-s3.html#step -2-create-a-pipe-with-auto-ingest-enabled

1 голос
/ 10 июля 2020

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

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

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

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

...