Azure Databricks大數(shù)據(jù)構(gòu)建營 掐指一算,大數(shù)據(jù)常用的技術(shù)組件Azure Databricks大數(shù)據(jù)構(gòu)建營 掐指一算數(shù)據(jù)分析,這恐怕是任何大數(shù)據(jù)系統(tǒng)最核心的功能和目標,畢竟只有經(jīng)過妥善的分析并得出結(jié)論,才能從所積累的海量數(shù)據(jù)中獲得業(yè)務(wù)價值。那么,我們基于Azure Databricks構(gòu)建的大數(shù)據(jù)系統(tǒng)......
數(shù)據(jù)分析,這恐怕是任何大數(shù)據(jù)系統(tǒng)最核心的功能和目標,畢竟只有經(jīng)過妥善的分析并得出結(jié)論,才能從所積累的海量數(shù)據(jù)中獲得業(yè)務(wù)價值。那么,我們基于Azure Databricks構(gòu)建的大數(shù)據(jù)系統(tǒng),除了像之前介紹過的那樣處理實時數(shù)據(jù)流之外,在海量離線數(shù)據(jù)的分析和計算方面,又具備哪些優(yōu)勢?本篇將帶領(lǐng)你見分曉。
本次《Azure Databricks大數(shù)據(jù)構(gòu)建營》系列文章,將主要圍繞Azure Databricks以及其它配套服務(wù),通過一系列實戰(zhàn)教程告訴大家如何基于Azure云打造完全運行在云端的閉環(huán)大數(shù)據(jù)平臺。
內(nèi)容涵蓋:Azure Databricks的基礎(chǔ)知識,以及如何借助Azure Databricks實現(xiàn)流計算(Structure Streaming)、批處理(Spark SQL)、安全訪問控制以及機器學(xué)習(xí)能力等。
本系列的第一篇文章概括介紹了有關(guān)Azure Databricks的基礎(chǔ)知識,錯過的童鞋可以點擊這里回看;第二篇文章介紹了如何基于Azure Databricks開發(fā)實時告警系統(tǒng),可以點擊這里回看。而本篇,主要將介紹如何對離線數(shù)據(jù)進行分析和計算,進而獲得業(yè)務(wù)所需的各類見解。
背景介紹
一般來說,離線數(shù)據(jù)的分析都會運行OLAP SQL查詢,因而下文將主要圍繞SparkSQL,一個可以通過Spark來進行SQL分析的可實時、可離線計算框架展開介紹。下文場景基于集成Azure Datalake Gen2并啟用Databricks Delta Lake作為外部存儲實現(xiàn)計算存儲分離,通過SparkSQL分析新冠肺炎實時統(tǒng)計數(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的頂層運行,并可與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)強制:自動處理架構(gòu)變體,以防在引入過程中插入錯誤的記錄。
按時間順序查看:數(shù)據(jù)版本控制支持回滾、完整的歷史審核線索和可重現(xiàn)的機器學(xué)習(xí)試驗。
更新插入和刪除:支持合并、更新和刪除操作,以啟用復(fù)雜用例,如更改數(shù)據(jù)捕獲、漸變維度(SCD)操作、流式處理更新插入等。
總的來說,Delta Lake不僅能在需要事務(wù)符合ACID特性的場景提供支持,還針對性能也做了相當大的代碼優(yōu)化,本文的實現(xiàn)也是基于Delta Lake,需要注意數(shù)據(jù)格式需要轉(zhuǎn)換成delta。
正常情況下,Azure Datalake Gen2與Delta Lake的集成需要在Spark中增加配置項spark.delta.logStore.class=org.apache.spark.sql.delta.storage.AzureLogStore,并且集群需要在lib庫中支持hadoopazuredatalake/hadoopazure/wildflyopenssl JAR,具體過程可以見這里。所以這時PaaS的優(yōu)勢就顯示出來了:Azure Databricks在集群創(chuàng)建好的同時就已經(jīng)在集群上啟用了該庫,直接調(diào)用即可。Azure Datalake Gen2的創(chuàng)建過程本文不再贅述,具體見官方文檔。
本文將介紹兩種常見的集成方式,如下圖所示,并做幾點說明:
cmd2:非掛載方式
cmd2中通過Scala代碼演示Azure Databricks集成Azure Datalake Gen2的認證配置項,通過創(chuàng)建擁有IAM角色「Storage Blob Data Contributor」的服務(wù)主體來做認證,驗證通過后就可直接調(diào)用Datalake里的文件了,注意相關(guān)變量需要替換。
cmd3:掛載方式
cmd3中通過Python代碼演示Azure Databricks如何掛載Azure Datalake Gen2,身份驗證過程和cmd2的方式一樣。這種方式的好處是直接可以把遠端的Azure Datalake掛載到Azure Databricks上,就好像在使用本地磁盤一樣使用Datalake,本文更推薦并且采用該模式,同時注意相關(guān)變量需要替換。
另外,本文的環(huán)境位于Azure中國區(qū),所以相關(guān)域名都是https://login.partner.microsoftonline.cn,如果位于全球Azure中,那么相關(guān)域名將會是https://login.microsoftonline.com。
其實從最佳實踐角度來說,本文并不是實現(xiàn)的最好方式,因為在Notebook里的認證信息全部都是明文出現(xiàn)。最好的方式應(yīng)該集成Azure密鑰保管庫來隱藏密碼,該方式不再本文贅述,有興趣的同學(xué)自行研究吧,附上鏈接供參考。
引入數(shù)據(jù)源并運行SparkSQL
前面提到,本文所采用的示例數(shù)據(jù)是和新冠肺炎實時統(tǒng)計數(shù)據(jù)相關(guān),講到這里有必要介紹一個微軟提供的開放數(shù)據(jù)集Repo,其中包含各種場景下的csv/json/parquet格式的原始和脫敏數(shù)據(jù),本文所用的新冠肺炎數(shù)據(jù)也是在這里獲取的。
選擇CSV格式數(shù)據(jù)作為數(shù)據(jù)源,下載好之后上傳到Azure DataLake,在Container data下面再創(chuàng)建一個Source文件夾作為存放原始數(shù)據(jù)的目錄徑。
原始數(shù)據(jù)確定好之后,就可以通過Notebook來做SparkSQL分析了。本文用到的示例Notebook已經(jīng)上傳到了這里,幾個重要配置簡單說明下:
COVIDDF:COVIDDF為定義的DataFrame,通過spark.read.format(“csv”)格式并指定掛載路徑引入數(shù)據(jù);
COVIDDF.write.mode(“append”).format(“delta”):通過Append追加方式寫入目標表中,注意這里的格式delta,也就是前面提到的需要做格式轉(zhuǎn)換,寫入的表也需要指定路徑,并會在Azure Dalalake中生成相應(yīng)的文件;
ChinaCOVID及ChinaCOVID1:經(jīng)過上面的建表過程后就可以運行SparkSQL來做SQL查詢了。
總結(jié)
一個通過集成Azure Datalake Gen2作為外部存儲并采用Delta Lake格式進行SparkSQL分析的示例就完成了,本文基本上使用了PySpark來實現(xiàn),其實除此之外通過SQL或者Scala也是一樣可以實現(xiàn)的,有興趣的同學(xué)可以自己再深入研究下吧。
有關(guān)如何通過SparkSQL實現(xiàn)數(shù)據(jù)的離線分析和計算,就是這樣了。隨后的內(nèi)容中,我們還將繼續(xù)介紹如何實現(xiàn)安全訪問控制和機器學(xué)習(xí)能力。通過這些真實場景中的最佳實踐分享,也能幫助大家更清楚地認識到Azure Databricks的價值。敬請期待!
特別聲明:以上文章內(nèi)容僅代表作者本人觀點,不代表ESG跨境電商觀點或立場。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號密碼登錄
平臺顧問
微信掃一掃
馬上聯(lián)系在線顧問
小程序
ESG跨境小程序
手機入駐更便捷
返回頂部