这是一个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 服务。
-
在 Azure 菜单中,选择“创建资源” 。
然后,选择“分析” > “Azure Databricks” 。
-
在“Azure Databricks 服务” 下,提供以下值来创建 Databricks 服务:
表 1 properties 说明 工作区名称 为 Databricks 工作区提供一个名称。 订阅 从下拉列表中选择自己的 Azure 订阅。 资源组 指定是要创建新的资源组还是使用现有的资源组。 资源组是用于保存 Azure 解决方案相关资源的容器。 有关详细信息,请参阅 Azure 资源组概述。 位置 选择“China East 2 ”。 有关其他可用区域,请参阅各区域推出的 Azure 服务。 定价层 选择“标准” 。 -
创建帐户需要几分钟时间。 若要监视操作状态,请查看顶部的进度栏。
-
选择“固定到仪表板” ,然后选择“创建” 。
在 Azure Databricks 中创建 Spark 群集
-
在 Azure 门户中,转到所创建的 Databricks 服务,然后选择“启动工作区”。
-
系统随后会将你重定向到 Azure Databricks 门户。 在门户中选择“群集”。
-
在“新建群集”页中,提供用于创建群集的值。
-
填写以下字段的值,对于其他字段接受默认值:
-
输入群集的名称。
-
请务必选中“在不活动超过 __ 分钟后终止” 复选框。 如果未使用群集,则请提供一个持续时间(以分钟为单位),超过该时间后群集会被终止。
-
选择“创建群集”。 群集运行后,可将笔记本附加到该群集,并运行 Spark 作业。
-
在 Azure Data Lake Storage Gen2 帐户中创建文件系统
在本部分中,你将在 Azure Databricks 工作区中创建一个 Notebook,然后运行代码片段来配置存储帐户
-
在 Azure 门户中,转到你创建的 Azure Databricks 服务,然后选择“启动工作区”。
-
在左侧选择“工作区” 。 在 工作区 下拉列表中,选择 创建 > 笔记本 。
-
在“创建 Notebook”对话框中,输入 Notebook 的名称。 选择“Scala”作为语言,然后选择前面创建的 Spark 群集。
-
选择“创建” 。
-
以下代码块设置 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(