使用Microsoft Azure HDInsight整合Power BI

  • 4968
  • 0
  • 2014-07-28

使用Microsoft Azure HDInsight整合Power BI

 

 

 

在這波大數據的浪潮中,Hadoop鐵定是一個非常重要的關鍵字。當計算的資料量越來越大時,受到物理的磁碟IO限制,計算上就會出現明顯的效能瓶頸。Hadoop除了可以透過hdfs檔案格式(分散式檔案系統)來提升檔案的讀取效能外,更可以透過MapReduce的機制將計算工作拆分後分散至各個細部檔案進行執行後,再將個別計算結果彙總統合。如此一來可以大幅的縮短處理巨量資料的時間。

不過雖然說Hadoop是處理巨量資料的利器,但是在查詢數據與展示數據上來說,若是也得讓查詢者撰寫MapReduce語法,未免也顯得太過麻煩。為了解決這樣的問題,也因此Hive技術於焉誕生,他讓前端使用者可以透過接近SQL的語法查詢,但是透過編譯轉換為MapReduce的操作以查詢hdfs檔案系統。但是使用Hive上仍舊有許多語法以及功能的限制,所以在今天的文章中,我們將介紹如何透過Power Query存取Hadoop中的數據直接進行分析。

 

在此使用的是微軟雲端的Hadoop解決方案HDInsight,HDInsight是微軟與Hortonworks合作,將原有Apache Hadoop移植到Windows平台。同時微軟透過雲端虛擬機器技術,讓Hadoop使用者無須花時間在繁複的叢集架設與導入的過程中,可以在雲端環境中單純的透過幾步設定就完成Hadoop叢集的建置。

 

 

 

 

以下我們將會示範如何建構Microsoft Azure HDInsight叢集,並且將資料載入HDInsight之中,並且透過Power Query存取HDInsight的資料並且進行分析。

 

首先在設定HDInsight之前,您必須要有Microsoft Azure帳戶。您只需要點選下方「+新增」按鈕,選取「Data Service」—>「HDInsight」—>「Hadoop」,即可開啟建立HDInsight叢集選項,您必須於介面輸入:

  • 叢集名稱:您的HDInsight叢集識別名稱,請全部小寫。
  • 叢集大小:設定您所需要的資料節點數
  • 密碼:設定HDInsight密碼,必須要10個字元以上,而且要至少有一個大寫、一個小寫、一個數字以及一個特殊符號
  • 儲存體帳戶:儲存此HDInsight叢集資料的儲存體帳戶。建議不要與其他用途共用。由於HDInsight的儲存體帳戶有限制地區,所以須注意可使用的地區選項。目前離我們最近的是東南亞。

 

image

 

在按下「建立HDInsight叢集」之前還是要提醒各位,HDInsight不是免費服務,它是根據叢集節點「存在」的時間來收費,也就是你建立後即使你關機跑去睡個覺的期間,它還是一直在收費的,計費周期一直到你將整個HDInsight叢集刪除為止。所以請務必記得收費模式,在練習時也要量力而為免得收到帳單時傻眼。

 

 

 

image

大概等待15分鐘左右,系統就會完成整個Hadoop叢集的建置與設定。同時在管理入口網站的「HDInsight」選單中,也可以看可用叢集的清單。

image

點選欲檢視叢集,可以看到如下圖的儀表板,以檢視目前計算資源的耗用狀況。

 

 

 

 

HDInsight實際上是透過雲端虛擬機器的方式來實現的,因此若要進行HDInsight的操作,最簡單的方式就是透過遠端桌面連結至虛擬機器,再透過指令的方式來進行。所以請切換至「Configuration」頁籤,點選下方「Desk Remote」按鈕。

 

 

 

若是首次點選,您必須設置遠端桌面登入的使用者名稱、密碼以及遠端桌面到期時間。

首次設定完成後再按一次「Remote Destop」即可下載遠端桌面的rdp檔。

 

 

 

登入虛擬機器後,我們可以在桌面上看到「Hadoop Command Line」命令工具的捷徑。在這個範例中,我是先透過手動的方式將內政部時價登錄的數據存放在HDInsight虛擬機器的C槽下,然後接著我可以透過以下的指令(copyFromLocal),將資料載入至Hadoop中。

 


hadoop dfs -copyFromLocal C:\MortagagePrice.txt /example/MortagagePrice.txt

 

 

 

 

 

 

 

我們今天先以此資料為基礎,接著我們要來展示如何透過Power BI來存取與展示HDInsight中的資料。Power BI是目前微軟商業智慧技術的的重心,它包含以下4個功能模組:

  • Power Pivot:透過xVelocity記憶體基礎運算技術,可以設計便於分析的資料模型
  • Power Query:可以用來存取各種典型數據(資料庫與文字檔案)與非結構化數據(Hadoop、網頁、Json、Facebook…)
  • Power View:高度互動性的報表分析工具
  • Power Map:主要是負責地理資訊的視覺化

 

目前這4個模組都含括在Excel 2013中,除了Power Map之外,也都還可以透過訂閱Power BI for Office 365的方式,將分析成果發布於雲端進行管理。

 

image

接著請開啟Power Query,由於Power Query並非預設Excel 2013功能,因此需要到以下網址下載。

http://www.microsoft.com/zh-TW/download/details.aspx?id=39379

 

您可以在「從其他來源」中看到「從Windows Azure HDInsight」的功能。

image

 

點選後會顯示如下圖之對話方塊,請輸入與HDInsight叢集關聯的Azure儲存體帳戶,這是因為HDInsight的資料是透過Azure儲存體來存放的。

 

image

接著輸入Azure儲存體帳號金鑰已完成認證,後點選「儲存」。

 

image

此時選單中就會將此HDInsight內的所有檔案列舉出來,我們可以找到剛剛載入的「MortagagePrice.txt」後,請點選第一欄的「Binary」字樣,此時他會載入此檔案的二進位檔。

 

 

由於Power Query具有自動辨識分隔符號的功能,因此無須指定即可展示資料。

 

image

 

 

 

在畫面右下方可以看到「載入設定」,已決定資料是否匯入製工作表或是資料模型。由於我們稍後還要透過Power Map進行分析,請務必勾選「載入至資料模型」。若是資料量過大,不建議勾選「載入至工作表」。

 

接著點選左上方的「套用並關閉」,即可進行載入作業。

image

載入作業完成後,我們可以在Excel 2013的Power Pivot中檢視剛才從Hadoop下載的資料,您也可以在上面再透過DAX設計額外的分析邏輯。

 

 

 

當資料載入Power Pivot資料模型後,即可開啟Power Map。

請注意,如果您是Office 365 ProPlus的訂閱戶,Power Map是預設安裝的(而且有中文版),但是若是一般Excel 2013使用者,您必須是Excel 2013 Professional版本,而且請至以下網址下載安裝Power Map增益集(目前僅提供英文版):

http://www.microsoft.com/en-us/download/details.aspx?id=38395&WT.mc_id=blog_PBI_Announce_DI

 

image

 

在我的資料中有兩個欄位STX與STY分別代表經度與緯度,我用它來定位,此時數據就會標定在台灣上方。

 

 

image

接著我切換為熱溫圖,並且用來顯示房屋銷售的總金額,以找出不動產買賣的熱點區域。

image

 

 

 

這樣就輕鬆完成不動產銷售地理分析。雖然我們今天並沒有介紹到如何使用Hadoop來處理資料,但是當我們大量資料利用Hadoop清理完畢後,就可以透過Power BI各模組存取Hadoop進行分析,這兩者的分工合作,可以簡化架構上的技術複雜度,並可讓分析者可以快速地掌握數據所呈現出來的管理信息。

 

亞洲資採臉書粉絲團:www.facebook.com/AsiaMinerTW

Allan Yiin

CTO, AsiaMiner