使用 Azure Databricks 作业创建第一个工作流

本文演示编排读取和处理示例数据集等任务的 Azure Databricks 作业。 在本快速入门中,请执行以下操作:

  1. 创建新笔记本并添加代码,以检索包含按年份排列的常用婴儿姓名的示例数据集。
  2. 将示例数据集保存到 Unity Catalog。
  3. 创建新的笔记本并添加代码,以从 Unity Catalog 读取数据集,按年份对其进行筛选,并显示结果。
  4. 使用笔记本创建新作业并配置两个任务。
  5. 运行作业并查看结果。

要求

如果工作区启用了 Unity Catalog,并且启用了无服务器作业,则默认情况下作业会在无服务器计算上运行。 你不需群集创建权限即可使用无服务器计算来运行作业。

否则,你必须拥有创建作业计算的群集创建权限或对通用计算资源的权限

Unity Catalog 中必须有一个。 本文在名为 main 的目录中使用 default 架构中的 my-volume 卷。 此外,你必须在 Unity Catalog 中具有以下权限:

  • READ VOLUMEWRITE VOLUMEALL PRIVILEGES(对于 my-volume 卷)。
  • USE SCHEMAALL PRIVILEGES(对于 default 架构)。
  • USE CATALOGALL PRIVILEGES(对于 main 目录)。

若要设置这些权限,请联系 Databricks 管理员或参阅 Unity Catalog 特权和安全对象

创建笔记本

检索和保存数据

要创建笔记本以检索示例数据集并将其保存到 Unity Catalog,请执行以下操作:

  1. 转到 Azure Databricks 登陆页,并在边栏中单击 新建图标“新建”,然后选择“笔记本”。 Databricks 会在默认文件夹中创建一个新的空白笔记本并将其打开。 默认语言是你最近使用的语言,笔记本会自动附加到你最近使用的计算资源。

  2. 如果需要,可将默认语言更改为 Python

  3. 复制以下 Python 代码并将其粘贴到笔记本的第一个单元格中。

    import requests
    
    response = requests.get('https://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv')
    csvfile = response.content.decode('utf-8')
    dbutils.fs.put("/Volumes/main/default/my-volume/babynames.csv", csvfile, True)
    

读取和显示经过筛选的数据

若要创建一个笔记本以读取和显示要筛选的数据,请执行以下操作:

  1. 转到 Azure Databricks 登陆页,并在边栏中单击 新建图标“新建”,然后选择“笔记本”。 Databricks 会在默认文件夹中创建一个新的空白笔记本并将其打开。 默认语言是你最近使用的语言,笔记本会自动附加到你最近使用的计算资源。

  2. 如果需要,可将默认语言更改为 Python

  3. 复制以下 Python 代码并将其粘贴到笔记本的第一个单元格中。

    babynames = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/Volumes/main/default/my-volume/babynames.csv")
    babynames.createOrReplaceTempView("babynames_table")
    years = spark.sql("select distinct(Year) from babynames_table").toPandas()['Year'].tolist()
    years.sort()
    dbutils.widgets.dropdown("year", "2014", [str(x) for x in years])
    display(babynames.filter(babynames.Year == dbutils.widgets.get("year")))
    

创建作业

  1. 在边栏中,单击 工作流图标“工作流”

  2. 单击 “创建作业”按钮

    “任务”选项卡显示“创建任务”对话框。

    创建第一个任务对话框

  3. 将“为作业添加名称…”替换为你的作业名称。

  4. 在“任务名称”字段中,输入任务的名称,例如 retrieve-baby-names 。

  5. 在“类型”下拉菜单中选择“笔记本”

  6. 使用文件资源管理器查找你创建的第一个笔记本,单击笔记本名称,再单击“确认”。

  7. 单击“创建任务”。

  8. 单击刚刚创建的任务下方的“添加任务”按钮以添加其他任务。

  9. 在“任务名称”字段中,输入任务的名称,例如 filter-baby-names 。

  10. 在“类型”下拉菜单中选择“笔记本”

  11. 使用文件资源管理器查找你创建的第二个笔记本,单击笔记本名称,再单击“确认”。

  12. 在“参数”下单击“添加” 。 在“键”字段中,选择 year。 在“值”字段中,输入 2014

  13. 单击“创建任务”。

运行作业

若要立即运行作业,请单击右上角的 “立即运行”按钮。 也可以通过单击“运行”选项卡并单击“活动运行”表中的“立即运行”来运行作业。

查看运行详细信息

  1. 单击“运行”选项卡,然后单击“活动运行”表或“已完成的运行数(过去 60 天)”表中的运行所对应的链接。

  2. 单击任一任务,查看输出和详细信息。 例如,单击 filter-baby-names 任务可查看筛选任务的输出和运行详细信息:

    查看筛选器名称结果

使用不同的参数运行

若要重新运行作业并筛选不同年份的婴儿姓名,请执行以下操作:

  1. 单击“立即运行”旁边的 蓝色向下插入符号,然后选择“使用不同的参数立即运行”或单击活动运行表中的“使用不同的参数立即运行”
  2. 在“值”字段中,输入 2015
  3. 单击 “运行”