当 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 容器中创建两个文件时,如何在 Azure 数据工厂中创建事件触发器?
如何基于 Azure 数据工厂中创建的 Blob 执行触发器?
使用 epplus 从 blob 触发 azure 函数访问 excel 文件