当 blob 更改时触发 Azure 数据块

Posted

技术标签:

【中文标题】当 blob 更改时触发 Azure 数据块【英文标题】:Trigger Azure databricks when blob changes 【发布时间】:2021-08-08 16:50:01 【问题描述】:

我正在使用 Azure databricks 中的 spark 解析 Azure blob 存储中的文件。该 blob 安装为 dbfs。现在我正在笔记本中使用硬编码的文件名(dbfs 文件名)。 但我想在创建新 blob 时使用新的 dbfs 名称触发笔记本。 我使用 Azure 函数进行了检查,我可以得到一个 blob 触发器。我可以从 Azure 函数启动数据块笔记本/作业吗?对 blob 的操作需要相当长的时间。在这种情况下是否建议使用 azure 函数。或者有没有其他方法可以实现这一点。

【问题讨论】:

检查 Azure 数据工厂。您可以在将新文件添加到 Blob 存储时安排触发器。 ADF 会将此文件名作为参数传递给 Databricks 笔记本。您可以检查 Dataricks 中的小部件,这些小部件将获取此文件名并在笔记本中使用它。 我发现了一个叫做 Databricks Streaming 的东西。我正在对此进行调查。有没有人对此有任何想法。也可以用吗。到目前为止,我还没有找到是否可以为每个文件执行我自己的函数来解析。所有示例均基于 CSV 文件。 【参考方案1】:

正如 Parth Deb 所说,使用 azure datafactory 会更容易满足您的要求。

您只需要创建管道触发器,然后基于“已创建 blob”创建事件触发器即可触发数据块活动。你只需要传递参数。

这是工厂的内置功能,可以查看文档:

https://docs.microsoft.com/en-us/azure/data-factory/concepts-pipelines-activities

https://docs.microsoft.com/en-us/azure/data-factory/transform-data-databricks-notebook

https://docs.microsoft.com/en-us/azure/data-factory/how-to-expression-language-functions

你可以看看上面的文档。最后,你基本上只需要一些鼠标操作。

【讨论】:

【参考方案2】:

我最终使用了 ADF。我使用基于文件名触发的 Blob 触发器创建了一个新管道。

【讨论】:

以上是关于当 blob 更改时触发 Azure 数据块的主要内容,如果未能解决你的问题,请参考以下文章

Azure 函数在 blob 触发期间找不到 blob

在 Azure Blob 容器中创建两个文件时,如何在 Azure 数据工厂中创建事件触发器?

如何基于 Azure 数据工厂中创建的 Blob 执行触发器?

使用 epplus 从 blob 触发 azure 函数访问 excel 文件

当有文件存储在 Azure Blob 存储中时触发 API 终结点

将文件上传到 Azure Blob 存储时没有触发事件网格事件——为啥?