Azure Databricks大數(shù)據(jù)構(gòu)建營 掐指一算,azure 大數(shù)據(jù)Azure Databricks大數(shù)據(jù)構(gòu)建營 掐指一算數(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ù)據(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í)能力等。
本系列的第一篇文章概括介紹了有關(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ù)的分析都會運(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)資源依然會沿用之前兩篇文章的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)制:自動處理架構(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。
正常情況下,Azure Datalake Gen2與Delta Lake的集成需要在Spark中增加配置項(xiàng)spark.delta.logStore.class=org.apache.spark.sql.delta.storage.AzureLogStore,并且集群需要在lib庫中支持hadoopazuredatalake/hadoopazure/wildflyopenssl JAR,具體過程可以見這里。所以這時(shí)PaaS的優(yōu)勢就顯示出來了:Azure Databricks在集群創(chuàng)建好的同時(shí)就已經(jīng)在集群上啟用了該庫,直接調(diào)用即可。Azure Datalake Gen2的創(chuàng)建過程本文不再贅述,具體見官方文檔。
本文將介紹兩種常見的集成方式,如下圖所示,并做幾點(diǎn)說明:
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)域名將會是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ù)的目錄徑。
原始數(shù)據(jù)確定好之后,就可以通過Notebook來做SparkSQL分析了。本文用到的示例Notebook已經(jīng)上傳到了這里,幾個(gè)重要配置簡單說明下:
COVIDDF:COVIDDF為定義的DataFrame,通過spark.read.format(“csv”)格式并指定掛載路徑引入數(shù)據(jù);
COVIDDF.write.mode(“append”).format(“delta”):通過Append追加方式寫入目標(biāo)表中,注意這里的格式delta,也就是前面提到的需要做格式轉(zhuǎn)換,寫入的表也需要指定路徑,并會在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à)值。敬請期待!
特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號密碼登錄
平臺顧問
微信掃一掃
馬上聯(lián)系在線顧問
小程序
ESG跨境小程序
手機(jī)入駐更便捷
返回頂部