快速入门:使用 Azure 门户在 Azure Databricks 工作区上运行 Spark 作业

在本快速入门中,将使用 Azure 门户创建一个具有 Apache Spark 群集的 Azure Databricks 工作区。 你在群集上运行作业,并使用自定义图表根据西雅图安全数据生成实时报告。

先决条件

  • Azure 订阅 - 创建试用版订阅。 不能使用 Azure 试用版订阅完成本教程。 如果你有试用版订阅,请转到个人资料,将订阅更改为“标准预付费套餐”。 有关详细信息,请参阅 Azure 试用版订阅。 然后,对你所在区域中的 vCPU 请求增加配额。 创建 Azure Databricks 工作区时,可以选择“试用版(高级 - 14天免费 DBU)”定价层,让工作区访问免费的高级 Azure Databricks DBU 14 天。

  • 登录 Azure 门户

创建 Azure Databricks 工作区

在本部分,你将使用 Azure 门户或 Azure CLI 创建 Azure Databricks 工作区。

  1. 在 Azure 门户中,选择“创建资源”,在搜索筛选器中输入“Azure Databricks”,然后选择 Enter 键。

    Databricks on Azure portal

  2. 在市场页中选择“Azure Databricks”项,然后在 Azure Databricks 页中选择“创建”。

  3. 在“Azure Databricks 服务” 下,提供所需的值以创建 Databricks 工作区。

    Create an Azure Databricks workspace

    提供以下值:

    属性 说明
    工作区名称 提供 Databricks 工作区的名称
    订阅 从下拉列表中选择自己的 Azure 订阅。
    资源组 指定是要创建新的资源组还是使用现有的资源组。 资源组是用于保存 Azure 解决方案相关资源的容器。 有关详细信息,请参阅 Azure 资源组概述
    位置 选择“中国北部 2”。 有关其他可用区域,请参阅各区域推出的 Azure 服务
    定价层 在“标准”、“高级”和“试用”之间进行选择。 有关这些层的详细信息,请参阅 Databricks 价格页
  4. 选择“查看 + 创建”,然后选择“创建” 。 创建工作区需要几分钟时间。 创建工作区时,可以在“通知”中查看部署状态。 完成此过程后,你的用户帐户将自动添加为工作区的管理员用户。

    Databricks deployment tile

    当工作区部署失败时,仍然会在失败状态下创建工作区。 删除失败的工作区,并创建一个解决部署错误的新工作区。 删除失败的工作区时,托管资源组和任何成功部署的资源也将被删除。

在 Databricks 中创建 Spark 群集

注意

若要使用试用版订阅创建 Azure Databricks 群集,请在创建群集前转到个人资料,将订阅更改为“标准预付费套餐”。 有关详细信息,请参阅 Azure 试用版订阅

  1. 在 Azure 门户中,转到所创建的 Databricks 工作区,然后单击“启动工作区”。

  2. 随后将会重定向到 Azure Databricks 门户。 在该门户中,单击“新建群集”。

    Databricks on Azure

  3. 在“新建群集”页中,提供用于创建群集的值。

    Create Databricks Spark cluster on Azure

    除以下值外,接受其他所有默认值:

    • 输入群集的名称。
    • 在本文中,请创建运行时为 10.4LTS 的群集。
    • 请务必选中“在不活动 __ 分钟后终止”复选框。 提供一个持续时间(以分钟为单位),如果群集在这段时间内一直未被使用,则会将其终止。

    选择“创建群集”。 群集运行后,可将笔记本附加到该群集,并运行 Spark 作业。

有关创建群集的详细信息,请参阅在 Azure Databricks 中创建 Spark 群集

运行 Spark SQL 作业

执行以下任务在 Databricks 中创建笔记本、将该笔记本配置为从 Azure 开放数据集读取数据,然后针对这些数据运行 Spark SQL 作业。

  1. 在左窗格中选择“Azure Databricks”。 在“常见任务”中,选择“新建笔记本”。

    Create a new notebook

  2. 在“创建笔记本”对话框中输入一个名称,选择“Python”作为语言,并选择前面创建的 Spark 群集。

    Enter notebook details

    选择“创建”。

  3. 在此步骤中,请使用 Azure 开放数据集中的西雅图安全数据创建 Spark DataFrame,并使用 SQL 来查询数据。

    以下命令设置 Azure 存储访问信息。 将此 PySpark 代码粘贴到第一个单元格中,然后使用 Shift+Enter 来运行代码。

    blob_account_name = "azureopendatastorage"
    blob_container_name = "citydatacontainer"
    blob_relative_path = "Safety/Release/city=Seattle"
    blob_sas_token = r"?st=2019-02-26T02%3A34%3A32Z&se=2119-02-27T02%3A34%3A00Z&sp=rl&sv=2018-03-28&sr=c&sig=XlJVWA7fMXCSxCKqJm8psMOh0W4h7cSYO28coRqF2fs%3D"
    

    以下命令允许 Spark 以远程方式从 Blob 存储读取数据。 将此 PySpark 代码粘贴到下一个单元格中,然后使用 Shift+Enter 来运行代码。

    wasbs_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)
    spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name), blob_sas_token)
    print('Remote blob path: ' + wasbs_path)
    

    以下命令创建 DataFrame。 将此 PySpark 代码粘贴到下一个单元格中,然后使用 Shift+Enter 来运行代码。

    df = spark.read.parquet(wasbs_path)
    print('Register the DataFrame as a SQL temporary view: source')
    df.createOrReplaceTempView('source')
    
  4. 运行一个 SQL 语句,从名为 source 的临时视图返回头 10 行数据。 将此 PySpark 代码粘贴到下一个单元格中,然后使用 Shift+Enter 来运行代码。

    print('Displaying top 10 rows: ')
    display(spark.sql('SELECT * FROM source LIMIT 10'))
    
  5. 随后将会看到以下屏幕截图中所示的表格输出(此处只显示了一部分列):

    Sample data

  6. 现在创建此数据的视觉表示形式,用于说明使用 Citizens Connect App 和 City Worker App 而非其他源报告了多少安全事件。 在表格输出的底部,选择“条形图”图标,然后单击“绘图选项”。

    Create bar chart

  7. 在“自定义绘图”中,按屏幕截图中所示拖放值。

    Customize pie chart

    • 将“键”设置为“source”。

    • 将“值”设置为“<\id>”。

    • 将“聚合”设置为“计数”。

    • 将“显示类型”设置为“饼图”。

      单击“应用”。

清理资源

完成本文后,可以终止群集。 为此,请在 Azure Databricks 工作区的左窗格中选择“群集” 。 针对想要终止的群集,将光标移到“操作” 列下面的省略号上,选择“终止” 图标。

Stop a Databricks cluster

如果不手动终止群集,但在创建群集时选中了“在不活动 __ 分钟后终止”复选框,则该群集会自动停止。 在这种情况下,如果群集保持非活动状态超过指定的时间,则会自动停止。

后续步骤

在本文中,我们已在 Azure Databricks 中创建一个 Spark 群集,并使用 Azure 开放数据集中的数据运行了一个 Spark 作业。 我们还可以查看 Spark 数据源,了解如何将其他数据源中的数据导入 Azure Databricks。 请继续学习下一篇文章,了解如何使用 Azure Databricks 执行 ETL(提取、转换和加载数据)操作。