Snowpipe получает сообщение S3, но не пересылает его - PullRequest
0 голосов
/ 19 марта 2020

Мы настроили объект S3 создания уведомлений в Snowpipe. Он получает сообщение, но не пересылает его, поэтому данные не загружаются. Когда мы запускаем оператор COPY INTO вручную, данные загружаются.

Пример вывода из SYSTEM $ PIPE_STATUS:

{
    "executionState": "RUNNING",
    "lastReceivedMessageTimestamp": "2020-03-18T14:14:48.69Z",
    "notificationChannelName": "arn:aws:sqs:us-east-1:[clipped]:[clipped]",
    "numOutstandingMessagesOnChannel": 0,
    "pendingFileCount": 0
}

Per https://docs.snowflake.net/manuals/user-guide/data-load-snowpipe-ts.html#step -1-check-the-pipe -status :

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

Но путь на этапе - это имя сегмента, за которым следует /, так что любой файл , созданный в ведро должно вызвать нагрузку. И имена файлов, безусловно, являются новыми и уникальными (как создано Kinesis Firehose). Определение этапа:

CREATE STAGE if not exists my_stage URL = 's3://my-stage/'
    CREDENTIALS = (AWS_KEY_ID = 'XXX' AWS_SECRET_KEY = 'XXX');

Определение канала:

create or replace pipe my_schema.my_data_pipe
    auto_ingest=true
    aws_sns_topic='arn:aws:sns:us-east-1:[my-account]:my-s3-create-event'
    as
  copy into my_schema.my_table
      from @my_schema.my_pipe
      file_format=(type='PARQUET' compression='SNAPPY')
      match_by_column_name=case_insensitive;

Обратите также внимание, что при обновлении sh канала данные загружаются: alter pipe my_schema.my_pipe refresh;

Что еще может заставить Snowpipe не пересылать сообщение о создании S3 и запускать загрузку?

Ответы [ 3 ]

1 голос
/ 19 марта 2020

Ваша копия в трубе создать sql плохо, измените на:

copy into my_db. my_schema.my_table
  from @my_db. my_schema.my_stage
0 голосов
/ 19 марта 2020

Вы можете попробовать выполнить следующее (если вы еще этого не сделали), чтобы увидеть, есть ли какие-либо ошибки, перечисленные на стороне Снежинки:

SYSTEM$PIPE_STATUS( '<pipe_name>' )

Некоторые другие идеи здесь также могут стоить глядя на: https://docs.snowflake.com/en/user-guide/data-load-snowpipe-ts.html#automatically -loading-data-using-cloud-storage-event-messages

Но если вы можете поделиться какими-либо ошибками, то другие могут предоставить отзывы / идеи оттуда.

0 голосов
/ 19 марта 2020

Настройка Snowpipe с SNS немного запутана. Пожалуйста, убедитесь, что выполните следующие действия: https://docs.snowflake.net/manuals/user-guide/data-load-snowpipe-auto-s3.html#option -2-configuring-amazon-sns-to-автоматизировать-snowpipe-используя-sqs-уведомления

Это все еще не работает, пожалуйста, свяжитесь со Snowflake служба поддержки.

PS. Обратите внимание, что ALTER PIPE REFRE SH не использует уведомления S3 для загрузки данных. Он просто перечисляет все файлы со сцены и выполняет COPY для всех таких файлов.

...