Snowpipe 无法从 Azure Blob 存储自动摄取

Snowpipe not auto-ingesting from Azure Blob Storage

过去几天的大部分时间里,我都在竭尽全力在我们的 Azure Blob 存储和 Snowflake 之间创建一个自动化的 Snowpipe。我的存储集成有效,但我的问题在于自动摄取和通知集成。

在 Snowflake 方面,我设置了通知集成、外部阶段、管道和 table,所有这些都是根据 Snowflake 文档创建的,其中介绍了如何 automate Snowpipe for Azure Storage .

Azure端,Snowflake企业应用用户拥有所需的存储队列权限。我还在 Azure 中配置了事件和消息队列,以便在将新的 blob 上传到容器时,在队列中成功创建一条消息。

但是,当我将 blob 放入云存储时,会创建一条消息,但 blob 不会自动提取到我的 table 中。如果我手动刷新管道,则会加载文件。我确实看到了一个 Snowflake community post seemingly referencing this issue and I followed the steps to re-configure the Azure-side permissions but to no avail. When looking at the Snowpipe troubleshooting documentation I was pointed to the SYSTEM$PIPE_STATUS 函数,这是我终于进入死胡同的地方。我收到了以下回复:

{"executionState":"RUNNING","pendingFileCount":0,
"notificationChannelName":"https://<storage_account>.queue.core.windows.net/<queue_name>",
"numOutstandingMessagesOnChannel":0,
"lastReceivedMessageTimestamp":"2022-02-24T11:11:15.031Z",
"channelErrorMessage":"downloadAttributes error:Queue not found for channel Name=https://<storage_account>.queue.core.windows.net/<queue_name>,
AccountId=6741, NotificationChannelID=147585,
IntegrationID=1725812",
"lastErrorRecordTimestamp":"2022-02-28T20:23:51.631Z"}

在搜索上面发现的错误“downloadAttributes error:Queue not found for channel Name..”时,除了另一个具有相同问题的 Whosebug question,我在任何地方都找不到任何东西,但遗憾的是没有任何回应。

任何帮助将不胜感激,因为此功能对于此项目至关重要。非常感谢您的帮助!

在某些情况下可能会导致该错误消息,最常见的原因是阶段或管道引用了旧的集成(例如,它们是使用 create 或 replace 和相同的名称重新创建的,但有一个新的唯一的id).

有两种方法可以解决这个问题:

  • 从头开始重新创建所有内容(不是最简单的方法)

  • 向 Snowflake 支持开一个案例,这样他们就可以启用一个参数来克服 stage/pipe 引用旧集成的情况。