使用Azure数据工厂,单个管道,单个Databricks Notebook并行处理表?

时间:2020-01-13 20:55:19

标签: azure azure-data-factory azure-databricks spark-notebook

我想使用Azure Data Factory和一个单独的Databricks Notebook并行转换表列表。

我已经有一个Azure数据工厂(ADF)管道,该管道接收表的列表作为参数,将表列表中的每个表设置为变量,然后调用一个笔记本(执行简单的转换)并传递每个表系列与此笔记本。问题在于,它是按顺序(一个接一个)变换表,而不是并行变换(同时变换所有表)。我需要对表进行并行处理。

所以,我的问题是: 1)是否可以在Azure数据工厂的完全相同的时间点(每次使用不同的表作为参数)多次触发同一Databricks笔记本? 2)如果是,那么我需要在管道或笔记本中进行哪些更改才能使其正常工作?

预先感谢:)

参数

ADF Parameters

变量

variables

设置表变量和笔记本

enter image description here

配置顺序

Configure Sequential

顺序未选中,批处理计数为空

当配置为“顺序”并且“批计数”为空白,并传递两个表时,管道“成功”运行,但仅转换了一个表(即使我在表列表中添加了多个表)。 “设置变量”正确显示两次,每个表一次。但是Orchestrate在同一张桌子上显示了两次。

enter image description here

顺序未选中,批次计数= 2

当配置为“顺序”且Batch Count = 2并传递两个表时,管道在第二次迭代时失败,但它还会尝试两次转换同一表。 “设置变量”正确显示两次,每个表一次。但是Orchestrate在同一张桌子上显示了两次。

Sequential Unchecked with Batch Count = 2

顺序检查或批处理计数= 1

如果我保留Sequential Checked或Batch Count = 1,则管道将正确运行并在所有表上执行转换,但是处理将按顺序进行(如预期的那样)。下面是5个表格的示例。

Sequential Checked or Batch Count =1

Example of Sequential Checked or Batch Count =1

设置变量任务

Set Variable Task Overview

通过值@item()传递的变量表

Variable table passed with value @item()

变量“表”定义为字符串

Variable "table"

参数“ table_list”

Parameter "table_list"

管道运行参数

Pipeline Run Parameters

1 个答案:

答案 0 :(得分:2)

我使用“查找”到SQL表而不是“设置变量”来解决它。下图显示使用一个笔记本并行运行5张桌子。

enter image description here