我们将S3对象创建通知配置为斯诺管道。它接收消息,但不转发它们,这样就不会加载数据。当我们手动运行复制到语句时,数据将加载。
来自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
}如果从消息队列接收到事件消息,但未转发到管道,则创建新数据文件的Blob存储路径与雪花阶段中指定的组合路径和管道定义可能不匹配
但是阶段中的路径是桶名,后面是/,因此桶中创建的任何文件都应该触发加载。而且文件名绝对是新的和唯一的(由Kinesis创建)。阶段定义:
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_stage
file_format=(type='PARQUET' compression='SNAPPY')
match_by_column_name=case_insensitive;还请注意,当我们刷新管道时,数据加载:alter pipe my_schema.my_pipe refresh;
还有什么可能导致斯诺管道不转发S3创建消息并触发加载?
发布于 2020-03-18 23:15:39
您在管道创建sql中的副本是错误的,请更改为:
copy into my_db. my_schema.my_table
from @my_db. my_schema.my_stage发布于 2020-03-19 02:31:09
用SNS设置雪管有点费解。请确保遵循以下步骤:https://docs.snowflake.net/manuals/user-guide/data-load-snowpipe-auto-s3.html#option-2-configuring-amazon-sns-to-automate-snowpipe-using-sqs-notifications
那仍然不起作用,请联系雪花支持。
PS。注意,ALTER刷新不使用S3通知来加载数据。它简单地列出了舞台上的所有文件,并对所有此类文件执行副本。
发布于 2020-03-19 03:48:05
您可以尝试运行以下代码(如果您还没有这样做的话),以查看雪花端是否列出了任何错误:
SYSTEM$PIPE_STATUS( '<pipe_name>' )这里还有一些其他的想法也值得研究:https://docs.snowflake.com/en/user-guide/data-load-snowpipe-ts.html#automatically-loading-data-using-cloud-storage-event-notifications
但是,如果你可以分享任何错误,那么其他人可以从那里提供反馈/想法。
https://stackoverflow.com/questions/60747973
复制相似问题