数据工厂 - 数据湖文件创建事件触发器触发两次
Data Factory - Data Lake File Created Event Trigger fires twice
我正在 Azure 数据工厂 V2 中开发管道。它有非常简单的复制activity。当文件添加到 Azure Data Lake Store Gen 2 时,管道必须启动。为了做到这一点,我在创建的 Blob 上创建了一个附加到 ADLS_gen2 的事件触发器。然后将触发器分配给管道并将触发器数据@triggerBody().fileName 关联到管道参数。
为了对此进行测试,我正在使用 Azure 存储资源管理器并将文件上传到数据湖。问题是数据工厂中的触发器被触发了两次,导致管道启动了两次。第一个管道 运行 按预期完成,第二个管道仍在处理中。
有人遇到过这个问题吗?我试图删除 DF 中的触发器并创建新触发器,但结果与新触发器相同。
enter image description here
enter image description here
我自己也遇到了同样的问题。
将文件写入 ADLS v2 时,有一个初始的 CreateFile 操作和一个 FlushWithClose 操作,它们都触发了 Microsoft.Storage.BlobCreated 事件类型。
https://docs.microsoft.com/en-us/azure/event-grid/event-schema-blob-storage
如果要确保仅在块 Blob 完全提交时才触发 Microsoft.Storage.BlobCreated 事件,请过滤 FlushWithClose REST API 调用的事件。此 API 调用仅在数据完全提交到 Block Blob 后触发 Microsoft.Storage.BlobCreated 事件。
https://docs.microsoft.com/en-us/azure/event-grid/how-to-filter-events
您可以通过导航到 Azure 门户中的事件订阅并选择正确的主题类型(存储帐户)以及订阅和位置来过滤掉 CreateFile 操作。完成后,您应该能够看到触发器并更新其上的过滤器设置。我删除了 CreateFile。
在您的触发器定义中,将 'Ignore empty blobs' 设置为是。
@dtape 的评论可能是下面发生的事情,打开这个忽略空设置可以有效地过滤掉创建部分(但不是数据写入部分)。
这解决了我的问题。
我正在 Azure 数据工厂 V2 中开发管道。它有非常简单的复制activity。当文件添加到 Azure Data Lake Store Gen 2 时,管道必须启动。为了做到这一点,我在创建的 Blob 上创建了一个附加到 ADLS_gen2 的事件触发器。然后将触发器分配给管道并将触发器数据@triggerBody().fileName 关联到管道参数。
为了对此进行测试,我正在使用 Azure 存储资源管理器并将文件上传到数据湖。问题是数据工厂中的触发器被触发了两次,导致管道启动了两次。第一个管道 运行 按预期完成,第二个管道仍在处理中。
有人遇到过这个问题吗?我试图删除 DF 中的触发器并创建新触发器,但结果与新触发器相同。 enter image description here
enter image description here
我自己也遇到了同样的问题。
将文件写入 ADLS v2 时,有一个初始的 CreateFile 操作和一个 FlushWithClose 操作,它们都触发了 Microsoft.Storage.BlobCreated 事件类型。
https://docs.microsoft.com/en-us/azure/event-grid/event-schema-blob-storage
如果要确保仅在块 Blob 完全提交时才触发 Microsoft.Storage.BlobCreated 事件,请过滤 FlushWithClose REST API 调用的事件。此 API 调用仅在数据完全提交到 Block Blob 后触发 Microsoft.Storage.BlobCreated 事件。
https://docs.microsoft.com/en-us/azure/event-grid/how-to-filter-events
您可以通过导航到 Azure 门户中的事件订阅并选择正确的主题类型(存储帐户)以及订阅和位置来过滤掉 CreateFile 操作。完成后,您应该能够看到触发器并更新其上的过滤器设置。我删除了 CreateFile。
在您的触发器定义中,将 'Ignore empty blobs' 设置为是。
@dtape 的评论可能是下面发生的事情,打开这个忽略空设置可以有效地过滤掉创建部分(但不是数据写入部分)。
这解决了我的问题。