Мы настроили объект 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 и запускать загрузку?