使用 Azure Databricks 做ETL

本文演示如何使用Azure Databricks执行ETL流程,包括从Azure Data Lake Storage Gen2提取数据,进行数据转换,然后加载到Azure Synapse Analytics。详细步骤涉及创建Databricks服务,设置Spark集群,配置存储帐户,以及使用Scala代码处理数据。
摘要由CSDN通过智能技术生成

这是一个Demo,大家可以一起学习,一起交流,有问题的可以私信,或者留言

本文使用 Azure Databricks 执行 ETL(提取、转换和加载数据)操作。 将数据从 Azure Data Lake Storage Gen2 提取到 Azure Databricks 中,在 Azure Databricks 中对数据运行转换操作,然后将转换的数据加载到 Azure Synapse Analytics 中。

本文的步骤使用 Azure Databricks 的 Azure Synapse 连接器将数据传输到 Azure Databricks。 而此连接器又使用 Azure Blob 存储来临时存储在 Azure Databricks 群集和 Azure Synapse 之间传输的数据。

下图演示了应用程序流:

 

创建 Azure Databricks 服务

在本部分中,你将使用 Azure 门户创建 Azure Databricks 服务。

  1. 在 Azure 菜单中,选择“创建资源” 。

    在 Azure 门户中创建资源

    然后,选择“分析” > “Azure Databricks” 。

    在 Azure 门户上创建 Azure Databricks

  2. 在“Azure Databricks 服务” 下,提供以下值来创建 Databricks 服务:

    表 1
    properties 说明
    工作区名称 为 Databricks 工作区提供一个名称。
    订阅 从下拉列表中选择自己的 Azure 订阅。
    资源组 指定是要创建新的资源组还是使用现有的资源组。 资源组是用于保存 Azure 解决方案相关资源的容器。 有关详细信息,请参阅 Azure 资源组概述
    位置 选择“China East 2 ”。 有关其他可用区域,请参阅各区域推出的 Azure 服务
    定价层 选择“标准” 。
  3. 创建帐户需要几分钟时间。 若要监视操作状态,请查看顶部的进度栏。

  4. 选择“固定到仪表板” ,然后选择“创建” 。

在 Azure Databricks 中创建 Spark 群集

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

  2. 系统随后会将你重定向到 Azure Databricks 门户。 在门户中选择“群集”。

    Azure 上的 Databricks

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

    在 Azure 上创建 Databricks Spark 群集

  4. 填写以下字段的值,对于其他字段接受默认值:

    • 输入群集的名称。

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

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

在 Azure Data Lake Storage Gen2 帐户中创建文件系统

在本部分中,你将在 Azure Databricks 工作区中创建一个 Notebook,然后运行代码片段来配置存储帐户

  1. 在 Azure 门户中,转到你创建的 Azure Databricks 服务,然后选择“启动工作区”。

  2. 在左侧选择“工作区” 。 在 工作区 下拉列表中,选择 创建 > 笔记本 。

    在 Databricks 中创建笔记本

  3. 在“创建 Notebook”对话框中,输入 Notebook 的名称。 选择“Scala”作为语言,然后选择前面创建的 Spark 群集。

    在 Databricks 中提供笔记本的详细信息

  4. 选择“创建” 。

  5. 以下代码块设置 Spark 会话中访问的任何 ADLS Gen 2 帐户的默认服务主体凭据。 第二个代码块会将帐户名称追加到该设置,从而指定特定的 ADLS Gen 2 帐户的凭据。 将任一代码块复制并粘贴到 Azure Databricks 笔记本的第一个单元格中。

    会话配置

    Scala复制

    val appID = "<appID>"
    val secret = "<secret>"
    val tenantID = "<tenant-id>"
    
    spark.conf.set("fs.azure.account.auth.type", "OAuth")
    spark.conf.set("fs.azure.account.oauth.provider.type", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
    spark.conf.set("fs.azure.account.oauth2.client.id", "<appID>")
    spark.conf.set("fs.azure.account.oauth2.client.secret", "<secret>")
    spark.conf.set("fs.azure.account.oauth2.client.endpoint", "https://login.microsoftonline.com/<tenant-id>/oauth2/token")
    spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "true")
    

    帐户配置

    Scala复制

    val storageAccountName = "<storage-account-name>"
    val appID = "<app-id>"
    val secret = "<secret>"
    val fileSystemName = "<file-system-name>"
    val tenantID = "<tenant-id>"
    
    spark.conf.set("fs.azure.account.auth.type." + storageAccountName + ".dfs.core.chinacloudapi.cn", "OAuth")
    spark.conf.set("fs.azure.account.oauth.provider.type." + storageAccountName + ".dfs.core.chinacloudapi.cn", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
    spark.conf.set("fs.azure.account.oauth2.client.id." + storageAccountName + ".dfs.core.chinacloudapi.cn", "" + appID + "")
    spark.conf.set("fs.azure.account.oauth2.client.secret." + storageAccountName + ".dfs.core.chinacloudapi.cn", "" + secret + "")
    spark.conf.set("fs.azure.account.oauth2.client.endpoint." + storageAccountName + ".dfs.core.chinacloudapi.cn", "https://login.microsoftonline.com/" + tenantID + "/oauth2/token")
    spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "true")
    dbutils.fs.ls("abfss://" + fileSystemName  + "@" + storageAccountName + ".dfs.core.chinacloudapi.cn/")
    spark.conf.set(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值