每个管道而不是每个笔记本的 Databricks 作业集群 activity

Databricks job cluster per pipeline not per notebook activity

我正在不同的 Databricks 笔记本中转换数据(读取、转换和写入 to/from ADLS)。我在 DataFactory 管道中连接了这些笔记本:

Notebook 1 --> Notebook 2 --> Notebook 3 --> Notebook

我已经创建了从 DataFactory 到我的 Databricks 的连接,并将其添加到我的笔记本活动中。每当管道被触发时,我想启动一个 Databricks 集群。总的来说,所有这些工作正常。但是 Databricks 为每个笔记本 activity 启动一个作业集群,这花费的时间太长,对我来说似乎没有必要。

是否可以在管道开始时启动集群,然后在所有笔记本完成后关闭集群?或者是否有任何论点认为每个 activity 都有一个工作集群是好的?

目前无法为多个笔记本活动使用相同的作业集群。

两个备选方案:

  1. 使用交互式集群
  2. 使用交互式集群,并且(如果有成本意识)在开始时有一个网络 activity 通过 azure databricks REST 端点启动集群,在笔记本活动结束后有另一个网络 activity DELETE(TERMINATE) 通过 REST 端点的集群

不幸的是,这两个选项都使用 交互式集群 - 与 工作集群 相比有点贵。

还有一个可能的解决方法。您可以使用 ADF 中的作业集群创建和触发“主”Databricks 笔记本,它会使用 dbutils.notebook.run() 命令一个一个地调用具有适当参数的笔记本。

通过这种方式,您将实现作业集群的成本节约,并且它也会立即终止。

参见本文中的“https://towardsdatascience.com/building-a-dynamic-data-pipeline-with-databricks-and-azure-data-factory-5460ce423df5”部分 -> https://towardsdatascience.com/building-a-dynamic-data-pipeline-with-databricks-and-azure-data-factory-5460ce423df5