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

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

先决条件

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

  • 登录 Azure 门户

在 Databricks 中创建 Spark 群集

备注

若要使用免费帐户创建 Azure Databricks 群集,请在创建群集前转到你的配置文件并将订阅更改为 即用即付。 有关详细信息,请参阅 Azure 免费帐户

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

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

    Azure 上的 Databricks

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

    在 Azure 上创建 Databricks Spark 群集

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

    • 输入群集的名称。

    • 对于本文,请通过(5.X、6.X、7.X)运行时创建群集。

    • 请务必选中 在不活动超过 __ 分钟后终止 复选框。 提供一个持续时间(以分钟为单位),如果群集在这段时间内一直未被使用,则会将其终止。

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

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

运行 Spark SQL 作业

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

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

    在 Databricks 中创建笔记本

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

    在 Databricks 中创建笔记本

    选择“创建”。

  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.chinacloudapi.cn/%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. 随后将会看到以下屏幕截图中所示的表格输出(此处只显示了一部分列):

    示例数据

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

    创建条形图

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

    自定义饼图

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

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

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

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

      单击“应用”。

清理资源

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

停止 Databricks 群集

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

后续步骤

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