Azure - 为存储容器中的每个新 blob 触发 Databricks 笔记本

Posted

技术标签:

【中文标题】Azure - 为存储容器中的每个新 blob 触发 Databricks 笔记本【英文标题】:Azure - Trigger Databricks notebook for each new blob in Storage container 【发布时间】:2021-03-19 03:13:05 【问题描述】:

我正在实施一种测试解决方案:

我已经用 Python 创建了一个 Azure databricks 笔记本。此笔记本正在执行以下任务(用于测试)-

    从 Pyspark 数据帧中的存储帐户读取 blob 文件。 对它做一些转换和分析。 使用转换后的数据创建 CSV 并存储在不同的容器中。 将原始读取的 CSV 移动到不同的存档容器(以便在下次执行时不会被拾取)。

*以上步骤也可以在不同的笔记本中完成。

现在,我需要为容器中的每个新 Blob 触发此笔记本。 我将实施以下编排-

容器中的新 blob -> 事件到 EventGrid 主题 -> 触发 Datafactory 管道 -> 执行 Databricks Notebook。

我们可以将文件名作为参数从 ADF 管道传递到 Databricks 笔记本。

寻找其他方法来进行编排流程。 如果以上看起来正确且更合适,请标记为已回答。

【问题讨论】:

这是一个常见的模式,你应该没问题。 【参考方案1】:

容器中的新 blob -> 事件到 EventGrid 主题-> 触发器 Datafactory 管道 -> 执行 Databricks Notebook。

我们可以将文件名作为参数从 ADF 管道传递到 Databricks 笔记本。

寻找其他方法来进行编排流程。如果以上 似乎正确且更合适,请标记为已回答。

您可以使用此方法。当然,你也可以走这条路:

New blob in Container -> Use built-in event trigger to trigger Datafactory pipeline -> execute Databricks Notebook

我认为您不需要介绍事件网格,因为数据工厂带有用于基于 blob 创建事件的触发器。

【讨论】:

感谢您的回复。我只使用 ADF 的内置事件触发器。 (我提到了 eventgrid ,因为这个 ADF 触发器还会在后端创建一个 EventGrid 系统主题)。 @Gopesh 您当前的方法是合适的。也许我们现在可以结束这个问题? 我得到了 2 个支持 cmets 来支持我所关注的内容。所以,是的,它可以结束。 @Gopesh 你可以标记答案来结束这个问题。:)【参考方案2】:

我获得了 2 个支持 cmets,用于我所关注的编排。 // 容器中的新 blob -> 事件到 EventGrid 主题 -> 触发 Datafactory 管道 -> 执行 Databricks Notebook。 //

【讨论】:

以上是关于Azure - 为存储容器中的每个新 blob 触发 Databricks 笔记本的主要内容,如果未能解决你的问题,请参考以下文章

列出 Azure 存储容器中的 Blob,包括元数据

Azure更新存储下所有Contrainer的访问权限

Azure Blob 存储容器是不是有文件数量限制?

是拥有许多小型 Azure 存储 blob 容器(每个都有一些 blob)还是一个非常大的容器有大量 blob?

Azure 门户在存储帐户中创建 Blob 容器时出错

获取 Azure 存储容器中的 blob 计数