1

我想使用 Azure 数据工厂和一个 Databricks Notebook 并行转换表列表。

我已经有一个 Azure 数据工厂 (ADF) 管道,它接收表列表作为参数,将表列表中的每个表设置为变量,然后调用一个笔记本(执行简单转换)并将每个表依次传递给这个笔记本。问题是它以串行方式(一个接一个)而不是并行方式(所有表同时)转换表。我需要并行处理这些表。

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

提前致谢 :)

参数

ADF 参数

变量

变量

设置表变量和笔记本

在此处输入图像描述

配置顺序

配置顺序

批次计数未选中的顺序 = 空白

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

在此处输入图像描述

批次计数 = 2 时未检查顺序

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

批次计数 = 2 时未检查顺序

顺序检查或批次计数 =1

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

顺序检查或批次计数 =1

顺序检查或批次计数 =1 的示例

设置可变任务

设置变量任务概述

使用值 @item() 传递的变量表

使用值 @item() 传递的变量表

变量“表”定义为字符串

多变的

参数“table_list”

范围

管道运行参数

管道运行参数

4

1 回答 1

2

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

在此处输入图像描述

于 2020-01-14T19:40:37.533 回答