【Azure 架構師學習筆記】- Azure Databricks (14) -- 搭建Medallion Architecture part 2

本文屬于【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 架構的流程大致如下:

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/71587.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/71587.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/71587.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vulnhub靶場之【digitalworld.local系列】的torment靶機

前言 靶機&#xff1a;digitalworld.local-torment&#xff0c;IP地址為192.168.10.12 攻擊&#xff1a;kali&#xff0c;IP地址為192.168.10.6 kali采用VMware虛擬機&#xff0c;靶機選擇使用VMware打開文件&#xff0c;都選擇橋接網絡 這里官方給的有兩種方式&#xff0c…

docker-compose部署mongodb副本集集群

生成密鑰文件 ? openssl rand -base64 756 > mongodb.key chmod 400 mongodb.key # 權限必須為400?:ml-citation{ref="4" data="citationList"} chown 999:999 mongodb.key # MongoDB容器用戶ID為999?:ml-citation{ref="4" data="…

k8s v1.28.15部署(kubeadm方式)

k8s部署&#xff08;kubeadm方式&#xff09; 部署環境及版本 系統版本&#xff1a;CentOS Linux release 7.9.2009 k8s版本&#xff1a;v1.28.15 docker版本&#xff1a;26.1.4 containerd版本&#xff1a;1.6.33 calico版本&#xff1a;v3.25.0準備 主機ip主機名角色配置1…

Redis特性總結

一、速度快 正常情況下&#xff0c;Redis 執?命令的速度?常快&#xff0c;官?給出的數字是讀寫性能可以達到 10 萬 / 秒&#xff0c;當然這也取決于機器的性能&#xff0c;但這?先不討論機器性能上的差異&#xff0c;只分析?下是什么造就了 Redis 如此之快&#xff0c;可以…

C# Unity 面向對象補全計劃 之 索引器與迭代器

本文僅作學習筆記與交流&#xff0c;不作任何商業用途&#xff0c;作者能力有限&#xff0c;如有不足還請斧正 本篇有部分內容出自唐老獅,唐老師網站指路:全部 - 游習堂 - 唐老獅創立的游戲開發在線學習平臺 - Powered By EduSoho 目錄 1.索引器 2.迭代器 1.索引器 我的理解 索…

深度學習PyTorch之13種模型精度評估公式及調用方法

深度學習pytorch之22種損失函數數學公式和代碼定義 深度學習pytorch之19種優化算法&#xff08;optimizer&#xff09;解析 深度學習pytorch之4種歸一化方法&#xff08;Normalization&#xff09;原理公式解析和參數使用 深度學習pytorch之簡單方法自定義9類卷積即插即用 實時…

C++ Primer 拷貝控制和資源管理

歡迎閱讀我的 【CPrimer】專欄 專欄簡介&#xff1a;本專欄主要面向C初學者&#xff0c;解釋C的一些基本概念和基礎語言特性&#xff0c;涉及C標準庫的用法&#xff0c;面向對象特性&#xff0c;泛型特性高級用法。通過使用標準庫中定義的抽象設施&#xff0c;使你更加適應高級…

【無監督學習】層次聚類步驟及matlab實現

層次聚類 &#xff08;四&#xff09;層次聚類1.算法步驟2.MATLAB 實現參考資料 &#xff08;四&#xff09;層次聚類 層次聚類是一種通過逐層合并或分裂數據點構建樹狀結構&#xff08;樹狀圖&#xff0c;Dendrogram&#xff09;的聚類方法。它分為兩種類型&#xff1a; 凝聚…

02 HarmonyOS Next儀表盤案例詳解(一):基礎篇

溫馨提示&#xff1a;本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦&#xff01; 文章目錄 1. 項目概述2. 技術架構2.1 文件結構2.2 ArkTS 語言特性裝飾器的使用 3. 數據結構設計3.1 接口定義3.2 數據初始化 4. 生命周期與頁面路由…

微信小程序接入deepseek

先上效果 話不多說&#xff0c;直接上代碼&#xff08;本人用的hbuilder Xuniapp&#xff09; <template><view class"container"><!-- 聊天內容區域 --><scroll-view class"chat-list" scroll-y :scroll-top"scrollTop":…

istio入門到精通-2

上部分講到了hosts[*] 匹配所有的微服務&#xff0c;這部分細化一下 在 Istio 的 VirtualService 配置中&#xff0c;hosts 字段用于指定該虛擬服務適用的 目標主機或域名。如果使用具體的域名&#xff08;如 example.com&#xff09;&#xff0c;則只有請求的主機 域名與 exa…

6. PromQL的metric name(在node exporter復制下來交給AI解釋的)

目錄 前言&#xff1a; Go 運行時指標&#xff1a; Go 內存統計指標&#xff1a; CPU 指標&#xff1a; 內存指標&#xff1a; 磁盤指標&#xff1a; 網絡指標&#xff1a; 系統指標&#xff1a; 前言&#xff1a; 寫這個得目的是為了后續方便查詢&#xff0c;因為在pro…

圖像形成與計算機視覺基礎

1. 圖像形成的基本原理 圖像形成是物理世界與傳感器&#xff08;如膠片、CCD/CMOS&#xff09;交互的過程&#xff0c;核心是光線的傳播與記錄。 1.1 直接放置膠片模型 物理原理&#xff1a;物體表面反射的光線直接照射到膠片上&#xff0c;但無任何遮擋或聚焦機制。 問題&a…

Dockerfile概述及編輯

文章目錄 Docker 鏡像原理操作系統組成部分Docker 鏡像原理鏡像制作 Dockerfile概念及作用Dockerfile 概念Dockerfile 作用 Dockerfile關鍵字 案例要求實現步驟 Docker 鏡像原理 操作系統組成部分 操作系統組成&#xff1a;進程調度子系統、進程通信子系統、內存管理子系統、…

CES Asia 2025:AR/VR/XR論壇峰會備受矚目

CES Asia 2025第七屆亞洲消費電子技術貿易展&#xff08;賽逸展&#xff09;將在首都北京心盛大舉行。作為亞洲極具影響力的消費電子技術展會&#xff0c;此次盛會以“科技重塑生活&#xff0c;創新定義未來”為主題&#xff0c;預計將吸引全球500展商、100,000專業觀眾參與&am…

【Java線程基礎操作詳解】

Java線程基礎操作詳解 前言1. 線程創建1.1 繼承Thread類1.2 實現Runnable接口1.3 匿名內部類1.4 lambda表達式 2. 線程中斷3. 線程等待4. 線程休眠 前言 在Java編程里&#xff0c;線程是實現多任務處理的關鍵概念。本文會詳細講解Java中線程的創建、中斷、等待以及休眠等操作&…

qt 播放pcm音頻

一、獲取PCM音頻 ffmpeg -i input.mp3 -acodec pcm_s16le -ar 44100 -ac 2 -f s16le output.pcm -acodec pcm_s16le&#xff1a;指定16位小端PCM編碼格式&#xff08;兼容性最佳&#xff09;-ar 44100&#xff1a;設置采樣率為CD標準44.1kHz&#xff08;可替換為16000/8000等&a…

python實現的可愛卸載動畫

在逛掘金時&#xff0c;掘金用戶在B站看到的靈感進行的一個卸載窗口的動畫效果的實用案例。人類是一種不斷在學習的動物&#xff0c;并且是一種模仿能力學習能里比較強的動物。我這里是第三波的學習實踐者咯&#xff01; 相對VUE構建動畫效果窗口&#xff0c;我更加喜歡用pytho…

出現FullGC的排查思路

一、明確Full GC的觸發原因 根據多篇資料&#xff0c;Full GC的觸發條件主要包括&#xff1a; 直接調用System.gc()&#xff1a;代碼或第三方庫&#xff08;如jxl組件&#xff09;可能顯式觸發。老年代空間不足&#xff1a;大對象直接進入老年代、Minor GC后存活對象過多導致…

【Python運維】 Python與日志管理:構建高效的集中式日志收集與分析系統

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 在當今信息化時代,日志數據成為企業監控系統健康、優化性能和保障安全的重要資源。傳統的分散式日志管理方式不僅效率低下,而且難以應對大…