本文讨论如何将 For each
任务与 Azure Databricks 作业配合使用,包括有关在作业 UI 中添加和配置任务的详细信息。 使用 For each
任务在循环中运行任务,将一组不同的参数传递给任务的每次迭代。
将 For each
任务添加到作业需要定义两个任务:For each
任务和“嵌套任务”。 嵌套任务是为 For each
任务的每次迭代运行的任务,是 Azure Databricks 作业的标准任务类型之一。 不能将另一个 For each
任务添加为嵌套任务。
例如,可以使用 For each
任务对多个表执行一组常见的转换,并将表名列表中的表名传递给任务的每次迭代。
若要从 For each
任务传递参数,可以:
- 在创建或编辑任务时定义一个 JSON 格式的集合。
- 使用前一个任务传递的任务值。 要了解有关任务值的详细信息,请参阅使用任务值在任务之间传递信息。
- 使用作业参数 要了解有关作业参数的详细信息,请参阅配置作业参数。
若要了解如何在添加或编辑 For each
任务时使用这些不同的参数类型,请参阅下一部分将“对于每个”任务添加到作业。
可以在创建作业或编辑在现有作业中的任务时添加 For each
任务。 要配置 For each
任务,请:
在“类型”下拉菜单中,选择“对于每个”。
在“任务名称”字段中输入任务的名称。
在“输入”文本框中,定义要循环访问的
For each
任务的值。 可以是以下位置之一:一个 JSON 格式的值数组。 可以是以下数据类型的数组:
- 键值对
- 字符串、数字或布尔类型
- 任意复杂 JSON 对象
任务值引用。 若要引用前一个任务传递的任务值,请使用
{{tasks.<task_name>.values.<task_value_name>}}
语法在“输入”文本框中设置值。 例如,如果在For each
任务之前名为generate_countries_list
的任务设置了以下任务值:dbutils.jobs.taskValues.set(key = "countries", value = countries_array)
然后,
For each
任务使用以下语法在“输入”文本框中引用该任务值:{{tasks.generate_countries_list.values.countries}}
。作业参数。 若要引用作业参数,请在“输入”文本框中使用以下语法:
{{job.parameters.<name>}}
例如,{{job.parameters.countries}}
。
若要选择设置可并行运行的迭代次数,请输入任务的“并发”值。 默认值是 1秒。
若要有选择地接收任务开始通知、成功通知或失败通知,请单击“+ 添加”。 请参阅针对作业事件添加电子邮件和系统通知。
若要完成
For each
任务的配置,并为每个迭代添加一个嵌套任务,请单击“添加要循环访问的任务”。为嵌套任务选择任务类型和配置选项。 嵌套任务是标准任务类型,具有相同的配置选项。 请参阅配置和编辑 Databricks 任务。
若要引用
For each
任务传递的参数,请单击“参数”。 使用{{input}}
引用将值设置为每次迭代的数组值,或者在循环访问对象列表时使用{{input.<key>}}
引用单个对象字段。单击“创建任务”。
该 For each
任务在作业 UI 中显示为节点,其中包含 For each
节点内的 嵌套任务节点。 若要在 For each
任务和嵌套任务之间切换,请单击相应节点。
For each
任务是顶级任务,下游任务可以将其指定为依赖项。 下游任务不能依赖或引用嵌套任务。
运行包含 For each
任务的作业与运行其他作业相同。
查看和管理作业运行也与任何其他作业相同,但 For each
任务的任务运行历史记录除外,该历史记录以任务迭代表的形式显示。 请参阅查看“对于每个”任务的任务运行历史记录。