Azure Databricks大數(shù)據(jù)構(gòu)建營 | 掐指一算,見解油然而生

來源: Microsoft云科技
作者:云科技
時(shí)間:2021-01-21
17221
本次《Azure Databricks大數(shù)據(jù)構(gòu)建營》系列文章,將主要圍繞Azure Databricks以及其它配套服務(wù),通過一系列實(shí)戰(zhàn)教程告訴大家如何基于Azure云打造完全運(yùn)行在云端的閉環(huán)大數(shù)據(jù)平臺。

數(shù)據(jù)分析,這恐怕是任何大數(shù)據(jù)系統(tǒng)最核心的功能和目標(biāo),畢竟只有經(jīng)過妥善的分析并得出結(jié)論,才能從所積累的海量數(shù)據(jù)中獲得業(yè)務(wù)價(jià)值。那么,我們基于Azure Databricks構(gòu)建的大數(shù)據(jù)系統(tǒng),除了像之前介紹過的那樣處理實(shí)時(shí)數(shù)據(jù)流之外,在海量離線數(shù)據(jù)的分析和計(jì)算方面,又具備哪些優(yōu)勢?本篇將帶領(lǐng)你見分曉。

本次《Azure Databricks大數(shù)據(jù)構(gòu)建營》系列文章,將主要圍繞Azure Databricks以及其它配套服務(wù),通過一系列實(shí)戰(zhàn)教程告訴大家如何基于Azure云打造完全運(yùn)行在云端的閉環(huán)大數(shù)據(jù)平臺。

內(nèi)容涵蓋:Azure Databricks的基礎(chǔ)知識,以及如何借助Azure Databricks實(shí)現(xiàn)流計(jì)算(Structure Streaming)、批處理(Spark SQL)、安全訪問控制以及機(jī)器學(xué)習(xí)能力等。

5.jpg

本系列的第一篇文章概括介紹了有關(guān)Azure Databricks的基礎(chǔ)知識,錯(cuò)過的童鞋可以點(diǎn)擊這里回看;第二篇文章介紹了如何基于Azure Databricks開發(fā)實(shí)時(shí)告警系統(tǒng),可以點(diǎn)擊這里回看。而本篇,主要將介紹如何對離線數(shù)據(jù)進(jìn)行分析和計(jì)算,進(jìn)而獲得業(yè)務(wù)所需的各類見解。

背景介紹

一般來說,離線數(shù)據(jù)的分析都會(huì)運(yùn)行OLAP SQL查詢,因而下文將主要圍繞SparkSQL,一個(gè)可以通過Spark來進(jìn)行SQL分析的可實(shí)時(shí)、可離線計(jì)算框架展開介紹。下文場景基于集成Azure Datalake Gen2并啟用Databricks Delta Lake作為外部存儲實(shí)現(xiàn)計(jì)算存儲分離,通過SparkSQL分析新冠肺炎實(shí)時(shí)統(tǒng)計(jì)數(shù)據(jù)。而相關(guān)資源依然會(huì)沿用之前兩篇文章的Demo所創(chuàng)建的資源組。

Delta Lake是一種可以提高數(shù)據(jù)湖可靠性的開源存儲層,由Databricks開發(fā)并開源。Delta Lake提供了ACID事務(wù)和可縮放的元數(shù)據(jù)處理,并可統(tǒng)一流處理和批數(shù)據(jù)處理。Delta Lake在現(xiàn)有Data Lake的頂層運(yùn)行,并可與Apache Spark API完全兼容。

具體而言,Delta Lake提供了:

Spark上的ACID事務(wù):可序列化的隔離級別可避免讀者看到不一致的數(shù)據(jù)。

可縮放的元數(shù)據(jù)處理:利用Spark的分布式處理能力,輕松處理包含數(shù)十億文件的PB級表的所有元數(shù)據(jù)。

流式處理和批處理統(tǒng)一:Delta Lake中的表是批處理表,也是流式處理源和接收器。流式處理數(shù)據(jù)引入、批處理歷史回填、交互式查詢功能都是現(xiàn)成的。

架構(gòu)強(qiáng)制:自動(dòng)處理架構(gòu)變體,以防在引入過程中插入錯(cuò)誤的記錄。

按時(shí)間順序查看:數(shù)據(jù)版本控制支持回滾、完整的歷史審核線索和可重現(xiàn)的機(jī)器學(xué)習(xí)試驗(yàn)。

更新插入和刪除:支持合并、更新和刪除操作,以啟用復(fù)雜用例,如更改數(shù)據(jù)捕獲、漸變維度(SCD)操作、流式處理更新插入等。

總的來說,Delta Lake不僅能在需要事務(wù)符合ACID特性的場景提供支持,還針對性能也做了相當(dāng)大的代碼優(yōu)化,本文的實(shí)現(xiàn)也是基于Delta Lake,需要注意數(shù)據(jù)格式需要轉(zhuǎn)換成delta。

640.png

正常情況下,Azure Datalake Gen2與Delta Lake的集成需要在Spark中增加配置項(xiàng)spark.delta.logStore.class=org.apache.spark.sql.delta.storage.AzureLogStore,并且集群需要在lib庫中支持hadoop-azure-datalake/hadoop-azure/wildfly-openssl JAR,具體過程可以見這里。所以這時(shí)PaaS的優(yōu)勢就顯示出來了:Azure Databricks在集群創(chuàng)建好的同時(shí)就已經(jīng)在集群上啟用了該庫,直接調(diào)用即可。Azure Datalake Gen2的創(chuàng)建過程本文不再贅述,具體見官方文檔。

本文將介紹兩種常見的集成方式,如下圖所示,并做幾點(diǎn)說明:

640 (1).png

cmd2:非掛載方式

cmd2中通過Scala代碼演示Azure Databricks集成Azure Datalake Gen2的認(rèn)證配置項(xiàng),通過創(chuàng)建擁有IAM角色「Storage Blob Data Contributor」的服務(wù)主體來做認(rèn)證,驗(yàn)證通過后就可直接調(diào)用Datalake里的文件了,注意相關(guān)變量需要替換。

cmd3:掛載方式

cmd3中通過Python代碼演示Azure Databricks如何掛載Azure Datalake Gen2,身份驗(yàn)證過程和cmd2的方式一樣。這種方式的好處是直接可以把遠(yuǎn)端的Azure Datalake掛載到Azure Databricks上,就好像在使用本地磁盤一樣使用Datalake,本文更推薦并且采用該模式,同時(shí)注意相關(guān)變量需要替換。

另外,本文的環(huán)境位于Azure中國區(qū),所以相關(guān)域名都是https://login.partner.microsoftonline.cn,如果位于全球Azure中,那么相關(guān)域名將會(huì)是https://login.microsoftonline.com。

其實(shí)從最佳實(shí)踐角度來說,本文并不是實(shí)現(xiàn)的最好方式,因?yàn)樵贜otebook里的認(rèn)證信息全部都是明文出現(xiàn)。最好的方式應(yīng)該集成Azure密鑰保管庫來隱藏密碼,該方式不再本文贅述,有興趣的同學(xué)自行研究吧,附上鏈接供參考。

引入數(shù)據(jù)源并運(yùn)行SparkSQL

前面提到,本文所采用的示例數(shù)據(jù)是和新冠肺炎實(shí)時(shí)統(tǒng)計(jì)數(shù)據(jù)相關(guān),講到這里有必要介紹一個(gè)微軟提供的開放數(shù)據(jù)集Repo,其中包含各種場景下的csv/json/parquet格式的原始和脫敏數(shù)據(jù),本文所用的新冠肺炎數(shù)據(jù)也是在這里獲取的。

選擇CSV格式數(shù)據(jù)作為數(shù)據(jù)源,下載好之后上傳到Azure DataLake,在Container data下面再創(chuàng)建一個(gè)Source文件夾作為存放原始數(shù)據(jù)的目錄徑。

640 (2).png

原始數(shù)據(jù)確定好之后,就可以通過Notebook來做SparkSQL分析了。本文用到的示例Notebook已經(jīng)上傳到了這里,幾個(gè)重要配置簡單說明下:

640 (3).png

COVIDDF:COVIDDF為定義的DataFrame,通過spark.read.format(“csv”)格式并指定掛載路徑引入數(shù)據(jù);

COVIDDF.write.mode(“append”).format(“delta”):通過Append追加方式寫入目標(biāo)表中,注意這里的格式delta,也就是前面提到的需要做格式轉(zhuǎn)換,寫入的表也需要指定路徑,并會(huì)在Azure Dalalake中生成相應(yīng)的文件;

ChinaCOVID及ChinaCOVID1:經(jīng)過上面的建表過程后就可以運(yùn)行SparkSQL來做SQL查詢了。

總結(jié)

一個(gè)通過集成Azure Datalake Gen2作為外部存儲并采用Delta Lake格式進(jìn)行SparkSQL分析的示例就完成了,本文基本上使用了PySpark來實(shí)現(xiàn),其實(shí)除此之外通過SQL或者Scala也是一樣可以實(shí)現(xiàn)的,有興趣的同學(xué)可以自己再深入研究下吧。

有關(guān)如何通過SparkSQL實(shí)現(xiàn)數(shù)據(jù)的離線分析和計(jì)算,就是這樣了。隨后的內(nèi)容中,我們還將繼續(xù)介紹如何實(shí)現(xiàn)安全訪問控制和機(jī)器學(xué)習(xí)能力。通過這些真實(shí)場景中的最佳實(shí)踐分享,也能幫助大家更清楚地認(rèn)識到Azure Databricks的價(jià)值。敬請期待!

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Microsoft云科技,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
隨著人工智能技術(shù)持續(xù)重塑企業(yè)運(yùn)營方式,企業(yè)需要能夠處理海量數(shù)據(jù)的系統(tǒng),以支持實(shí)時(shí)洞察,同時(shí)幫助他們應(yīng)對跨IT和OT環(huán)境(包括云端、邊緣和本地)中運(yùn)營、應(yīng)用、數(shù)據(jù)和基礎(chǔ)設(shè)施的協(xié)作難題。
Azure
微軟云
云服務(wù)
2024-12-172024-12-17
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來
.NET 9現(xiàn)已正式發(fā)布,它為.NET平臺的發(fā)展掀開了嶄新的一頁,突破了性能、云原生開發(fā)和AI技術(shù)集成的邊界。
Azure
微軟云
云服務(wù)
2024-12-162024-12-16
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
智能Microsoft Copilot副駕駛for Azure網(wǎng)絡(luò)服務(wù)現(xiàn)已推出公共預(yù)覽版。
Azure
微軟云
云服務(wù)
2024-12-102024-12-10
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺加速應(yīng)用創(chuàng)新
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺加速應(yīng)用創(chuàng)新
一年前,我們正式推出了一款端到端數(shù)據(jù)平臺,旨在幫助組織推動(dòng)人工智能轉(zhuǎn)型,并重新定義數(shù)據(jù)的連接、管理和分析方式。
Azure
微軟云
云服務(wù)
2024-12-092024-12-09
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家