主页 > 其他  > 

【Azure架构师学习笔记】-AzureDatabricks(14)--搭建MedallionArchitect

【Azure架构师学习笔记】-AzureDatabricks(14)--搭建MedallionArchitect

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (13) – 搭建Medallion Architecture part 1

前言

上文搭建了ADB 与外部的交互部分,本篇搭建ADB 内部配置来满足medallion 架构。

Volumes

相对于直接使用external location, 使用Volumes更加具有安全性和可扩展性,因为volume中不包含具体的路径,在编码时只需要指定volume名字,就如变量一样,哪怕external location的路径改变了,只需要修改volume和external location的映射关系即可,不需要修改代码。另外也避免了具体路径的暴露,加强了安全性。

Volumnes分为两类:managed和external。 managed 建立在UC schema创建时所在的托管区域,也就是说不需要指定具体路径。本质上他们就是一个指针,指向UC 管理的存储区域。

external volume 则是一个链接,指向使用storeage credential连接的外部路径(这里为ADLS),但是也由UC 管控。

CREATE EXTERNAL VOLUME dev_sales.sources.landing LOCATION 'abfss://<container>@<storage-account>.dfs.core.windows.net/'

上图为Databricks UC 的层次结构图,可以看到Volume是在最底层,所以创建volume时,需要先创建schema(Catalog在前面已经创建过了)。

如果你有MetaStore admin,就可以创建新的catalog,比如上面命令中的“dev_sales”

Managed Tables 存储成delta table,由Databricks管理。不建议使用Databricks之外的工具操作这些表。同时他们的位置由GUID来定义,所以使用外部工具将很难定位、标识具体的表。External Tables 基于external location创建的表。

Managed table安全、受UC控制、但限制在UC内部;external table 灵活,支持多种源,但不受UC控制。所以选择时需要权衡。同时这些如果在创建时没有指定具体路径,那么自动继承自所属的schema, 而如果schema在创建时也没有指定路径,则schema会继承所属catalog的路径。 来自于Databricks官网的示意图:添加链接描述

Bronze to Silver

下面先准备一个excel,这里把第一列用“-”来连接两个字母,例子比较随意,只是用来演示而已。 把excel转成parquet(非必要)之后,上传到ADLS 的Bronze container中。

使用下面的python代码读取文件,如果提示需要安装某些依赖包,则按需求安装即可。

from pyspark.sql import SparkSession # 初始化 Spark 会话(确保集群已附加到 UC) spark = SparkSession.builder.getOrCreate() # 通过 abfss 路径读取 Parquet parquet_path = "abfss://bronze@medallionadls01.dfs.core.windows.net/uc_source.parquet" df = spark.read.parquet(parquet_path) # 显示数据 display(df)

结果如下:

数据处理

下面模拟进行数据的处理, 把第一列截取“-”前的数据,结果如下图:

df = df.withColumn('a',F.split(df['a'],'-')[0]) df.display()

使用下面代码把结果保存到Silver container:

df.write.format('parquet')\ .mode('append')\ .option('path','abfss://silver@medallionadls01.dfs.core.windows.net/transformed_data')\ .save()

保存后可以在ADLS 上查看,但是它并不是按照单个文件存储:

可以在ADB 中使用下面SQL 命令查询保存的文件:

SELECT * FROM parquet.`abfss://silver@medallionadls01.dfs.core.windows.net/transformed_data`

关于从Silver到Gold, 更多的就是一些业务逻辑的处理上。整个Medallion 架构的流程大致如下:

标签:

【Azure架构师学习笔记】-AzureDatabricks(14)--搭建MedallionArchitect由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【Azure架构师学习笔记】-AzureDatabricks(14)--搭建MedallionArchitect