大資料分析工程師入門11-Hue&Zeppelin

大資料分析工程師入門11-Hue&Zeppelin

資料與智慧

本公眾號關注大資料與人工智慧技術。由一批具備多年實戰經驗的技術極客參與運營管理,持續輸出大資料、資料分析、推薦系統、機器學習、人工智慧等方向的原創文章,每週至少輸出10篇精品原創。同時,我們會關注和分享大資料與人工智慧行業動態。歡迎關注。

作者:HappyMint

日常資料分析工作中,很多時候都在處理

臨時性的需求

,這種需求要求快速響應和很快得出結果,如果每一個需求都需要寫在程式碼檔案中,然後編譯打包上傳再執行,就會非常浪費時間,尤其是寫出來的查詢語句頻繁出錯,需要不斷改正再重複打包上傳的時候。

所以繼上一篇Linux常用命令工具篇講解完成以後,本文講解另外兩個非常重要的資料分析工作中會使用到的工具:

Hue和Zeppelin

它們都提供了非常方便的資料查詢UI介面,能夠很方便的進行多次查詢並且能夠很快地查詢出結果。

那麼,為什麼要將兩種工具都跟大家介紹一下呢?

那是因為它們都有著屬於自己的特性和優勢,小夥伴們需要根據不同使用場景擇優選擇。考慮到有的小夥伴對這兩種工具目前還沒有很豐富的使用經驗,在本文開頭不對它們的異同之處介紹說明,待大家閱讀完本文正文,在文章的最後跟大家一起來總結對比一下它們的差別,這樣大家理解起來會更容易一些。

(本文分為上下兩段,分別由本人撰寫Hue部分,同組小夥伴凱凱連撰寫Zeppelin部分,所以閱讀起來會感覺行文風格和知識輸出方式略有差異,先就此提前說明一下。)

01

Hue

為什麼要講Hue?

Hue是一個Web應用,設計初衷是簡化使用者和Hadoop叢集間的互動。

大資料的框架很多,通常在解決一個問題的時候,會用到多種框架,這個時候有一個統一的web UI介面去管理各個大資料常用框架是非常方便的。Hue幾乎可以支援所有大資料框架,包含有HDFS檔案系統的頁面(呼叫HDFSAPI,進行增刪改查的操作),有HIVE UI介面(使用HiveServer2,JDBC方式連線,可以在頁面上編寫HiveQL語句,進行資料分析查詢),YARN監控及Oozie工作流任務排程頁面等等。

Hue透過把這些大資料技術棧整合在一起,透過統一的Web UI來訪問和管理,極大地提高了大資料使用者和管理員的工作效率。

日常資料分析工作中,Hue幾乎每天都會用到,所以需要熟練掌握Hue的常用功能。

主要講解目標

圍繞日常資料分析工作中使用HiveQL在Hue上查詢資料用到的功能點,寫一篇類似使用手冊的Hue工具操作指南。

主要講解思路

簡單來說,就以一個使用者第一次進入Hue來進行一個簡單的HiveQL查詢為例,逐步講解日常最常使用到的功能點。

1.1首先進入的主介面功能模組簡介

透過已經開通了許可權的使用者名稱密碼登陸Hue,首先進入的主介面如下:

大資料分析工程師入門11-Hue&Zeppelin

如圖展示的三塊紅框功能區,功能區1後續會在實際使用中結合使用場景介紹,功能區2和3說明如下:

功能區2從左到右依次是搜尋資料夾或Notebook、新建Hive Query或Notebook、新建資料夾、重新命名資料夾、將選中的資料夾或者Notebook移到回收站、將選中資料夾或Notebook分享給其他使用者或使用者組、下載選中的資料夾或Notebook(下載下來是個json檔案)、上傳檔案(要求是指定格式的json檔案)、進入回收站。功能區3羅列了目前該使用者許可權下看到的所有資料夾和Notebook,可以點選進入目標資料夾或Notebook頁面。

主介面簡單介紹完以後,下一步就是如何進入庫表檢視和HiveQL編輯介面了,入口在功能區1,共有兩種進入方式。

第一種:點選Query Editors出現下拉框

大資料分析工程師入門11-Hue&Zeppelin

點選Hive,進入頁面如下

大資料分析工程師入門11-Hue&Zeppelin

第二種:點選Notebooks

大資料分析工程師入門11-Hue&Zeppelin

新建一個Notebook(紅框1)或者進入自己已建的Notebook(紅框2),如選擇新建Notebook,進入頁面如下:

大資料分析工程師入門11-Hue&Zeppelin

標記1處是給該Notebook命名,標記2是該Notebook的詳細說明,標記3處可選擇某種語言進入程式碼編輯頁面,如選擇Hive編寫HiveQL。

大資料分析工程師入門11-Hue&Zeppelin

這兩種方式的區別是:

後者建Notebook可以將一次完整需求的所有查詢語句歸整儲存,便於複用。下次只要在上文所講的主介面透過搜尋該Notebook或上文所講能夠進入HiveQL編輯介面的第二個入口處,點選選單欄Notebooks彈出下拉框後,下滑滾動找到該Notebook,點選進入,就可以再次檢視這次所寫的查詢語句,進行復用或回顧,並且可以將該Notebook分享給他人使用。

在資料分析日常工作中,有時候需要提供給業務方某個需求的多個查詢語句,以供他們需要時使用,這時候就可以建一個Notebook,幫業務方把查詢語句依次寫好儲存,然後將Notebook分享給業務方即可。HiveQL編輯介面中點選上圖中的+號可以依次新增新的查詢編輯區,且新新增的查詢編輯區可重新選擇執行語言。

1.2檢視目標

表的基本資訊

透過上面的講解,現在我們已經可以著手進行資料查詢了,首先進入上文所建的Notebook(文章輸出示例Notebook)。

1.2.1 搜尋目標表

假設現在需要統計的資訊在test庫中,且只記得表名包含active欄位,直接搜尋關鍵字即可,搜尋支援模糊匹配。

大資料分析工程師入門11-Hue&Zeppelin

1.2.2 檢視欄位資訊

如果想要知道目標表中有哪些欄位,每個欄位的含義和資料型別是什麼,只需點選一下查詢到的目標表就可以看到欄位名和欄位型別,將滑鼠懸停在想要檢視的欄位上,就可以看到欄位註釋。

大資料分析工程師入門11-Hue&Zeppelin

1.2.3 檢視樣本值

如果想要知道表裡面的欄位值大概是什麼樣子的,有兩種方式,第一種可以寫HiveQL limit 幾條出來看看結果。

大資料分析工程師入門11-Hue&Zeppelin

另一種可以不用寫查詢語句那麼麻煩,透過點選上圖目標表或者每個欄位右側的像柱狀圖一樣的那個圖示,就會彈出樣本值浮框。

大資料分析工程師入門11-Hue&Zeppelin

1.2.4 檢視分割槽欄位

之前系列課程Hive基礎中有提到過,進行表資料查詢時,尤其是一張資料量非常龐大的表的時候,一定要記得加上分割槽欄位進行條件限制,否則極可能因查詢資料量過大而造成叢集崩潰。想要檢視目標表的分割槽欄位是哪些,方式有兩種,除了透過show create table 語句檢視,還有一種方式如下,點選DataBrowsers 下的Metastore Tables:

大資料分析工程師入門11-Hue&Zeppelin

進入test庫的詳情頁,如下:

大資料分析工程師入門11-Hue&Zeppelin

點選目標表紅框處的向右箭頭,進入該表的詳情頁,該頁面可以看到表的基本資訊、表的欄位資訊、分割槽資訊、樣本資料等。

大資料分析工程師入門11-Hue&Zeppelin

點選標記1處,檢視分割槽欄位資訊如下:

大資料分析工程師入門11-Hue&Zeppelin

點選標記2處,可檢視目前的分割槽欄位資訊(比如日期資訊)所有值的情況(至於頁面上其他功能按鈕,小夥伴們可以自己實踐操作查看了解一下)。

大資料分析工程師入門11-Hue&Zeppelin

點選標記1處可刪除所選中分割槽,點選標記2處可跳轉到HDFS檢視具體HDFS路徑。

1.3標題編寫HiveQL

欄位、欄位值、分割槽都明確了以後,可以寫第一個HiveQL了,以需要查詢某段時間目標表中每天所有明細資料為例。

大資料分析工程師入門11-Hue&Zeppelin

1.3.1 傳參

如果這個需求需要不定時查詢,那麼day_p的時間區間可以採用引數的方式傳入,使用者只需要在傳參輸入框輸入想要查詢的日期即可,start_time和end_time欄位可依據實際需要命名為別的名稱。要點是,在SQL中使用類似${argName}的形式,下面就會多一個輸入框。

大資料分析工程師入門11-Hue&Zeppelin

1.3.2 切換語言環境

目前編輯框的語言環境是HiveQL,如何想用SparkSql或者執行別的語言,可進行切換,切換語言環境的同時也會切換執行引擎。操作見下圖,點選標記處就可以進行選擇啦:

大資料分析工程師入門11-Hue&Zeppelin

1.3.3 語句格式化&執行

如果所編寫的HiveQL包含了很多層關聯或巢狀,整個語句結構不清晰,檢視起來很不方便,那麼可以使用Hue的Format功能,使整個語句的結構進行標準格式化。點選下圖示記2處,下拉框中選擇Format,即可將語句結構格式化。

標記1處是語句執行按鈕,點選即開始執行。如果查詢資料量非常大,已經查詢了很長一段時間或者突然發現查詢語句有問題,想要終止查詢,那麼同樣可點選標記1處進行終止。

大資料分析工程師入門11-Hue&Zeppelin

Format下方還有一個Clear選項,該選項可以將當前編輯框中的查詢語句和查詢結果清空。

1.3.4 檢視查詢結果

接下來將教大家在查詢結果資料欄位非常多的情況下如何選擇性的篩選檢視部分資料。

1.3.4.1 檢視所有結果欄位及其型別

點選下圖示記處。

大資料分析工程師入門11-Hue&Zeppelin

彈出如下標記處的查詢結果欄位值和欄位型別資訊。

大資料分析工程師入門11-Hue&Zeppelin

1.3.4.2 搜尋查詢結果指定欄位

查詢出來的結果欄位非常多的情況下,可使用搜索功能,如查詢all_user欄位。

大資料分析工程師入門11-Hue&Zeppelin

1.3.4.3 選擇顯示部分查詢結果欄位

如果只想顯示部分欄位檢視其結果值,可針對複選框進行選擇性勾選。

大資料分析工程師入門11-Hue&Zeppelin

1.3.5 查詢結果視覺化

Hue上可對查詢結果進行簡單的視覺化,點選下圖示記處彈出的下拉選項中可選擇性的進行不同型別視覺化,讀者可自行實踐操作下,這裡就不一一操作展示效果啦。

大資料分析工程師入門11-Hue&Zeppelin

1.3.6 查詢結果下載

通常情況下,在Hue上直接進行視覺化操作不會太多,一般會將整個查詢結果下載下來在Excel裡進行結果的初步分析和檢視工作。下載按鈕如下圖示記處,下拉框中提供不同的下載選項。需要注意的是,如果查詢的是資料量非常龐大的明細資料,很可能出現結果不能完全下載下來的情況,因此建議結果資料超過1000條時,優先下載csv格式。

大資料分析工程師入門11-Hue&Zeppelin

1.3.7 命名查詢主題

可以給每一條查詢語句命名,以便提高辨識度,方便日後查閱。

大資料分析工程師入門11-Hue&Zeppelin

如命名以上查詢語句為“查詢一段時間內的明細資料”,記住命名完成以後,點選下圖示記1處的儲存按鈕進行儲存,最好養成時時儲存的習慣,以免意外情況發生導致頁面重新重新整理,所有操作資訊丟失,又得重新開始的情況。

大資料分析工程師入門11-Hue&Zeppelin

1.3.8 清空Notebook裡的所有查詢結果

整個Notebook頁面查詢結果展示過多的話,有可能出現每次進入該Notebook頁面需要重新整理很久的情況,如無必要,可將所有查詢結果清空。

大資料分析工程師入門11-Hue&Zeppelin

1.3.10 其他

Hue還有很多其他功能點,感興趣的小夥伴可基於本文所介紹之基礎自行查看了解,作為入門課程,這裡就不繼續深入介紹了,比如HDFS相關資訊檢視頁面(透過標記1處進入)和Job資訊檢視頁面(透過標記2處進入)等。

大資料分析工程師入門11-Hue&Zeppelin

02

Zeppelin

2.1zeppelin簡介

zeppelin是一個非常流行的開源資料探索分析平臺。zeppelin集成了非常多的資料處理和分析相關的元件,其核心組織概念是notebook,所有的操作都可以在notebook中完成,官網的原話是“The Notebook is the place for all yourneeds”。

它主要擁有以下優秀的功能特性:

1)非常易用的操作介面,介面上提供了非常好用的各式工具,幫助你完成各種資料處理操作。

2)支援多種程式語言,zeppelin透過interpreter實現了將多種語言和資料處理框架以外掛的形式整合進來。官方預設集成了spark元件,幾乎是開箱即用的,非常方便。

3)有著強大的資料視覺化元件,除了支援基礎圖形(折線圖、柱狀圖、餅圖等)外,zeppelin還支援資料透視功能,而且是透過拖拽就可以完成視覺化操作,非常強大。

4)支援動態表單,允許在你的SQL語句或者程式碼中嵌入變數,在執行前輸入不同的引數值給變數賦值。

5)支援將zeppelin頁面或段落嵌入到其他網頁中,並能夠實時更新資料。

那麼對於大資料分析師來說,zeppelin能夠幫我們做什麼呢?

首先,zeppelin支援執行sparksql,我們可以在zeppelin上執行我們編寫的SQL語句,透過比對執行後的結果,驗證我們的SQL是否編寫正確;

其次,zeppelin支援執行scala程式碼,那我們可以利用它來試探性地使用spark的相關api,或者在zeppelin上編寫並執行spark的udf,避免反覆打包上傳,提高開發效率;

然後,zeppelin擁有非常強大的視覺化功能,我們可以對資料進行探索分析,透過視覺化直觀地發現問題,快速驗證構想,並深入地分析和挖掘資料價值。

最後,zeppelin的執行結果可以非常方便的匯出,可以使用它來完成臨時需求,提供資料結果給業務方。並且可以把相關程式碼或SQL儲存起來,下次如有相似需求,直接修改下相關條件執行下就可以了。

官網上有非常詳細的zeppelin安裝步驟,大家可以依照文件來完成安裝和配置,這裡就不佔用篇幅來講了。在大致瞭解了zeppelin之後,我們來看下它的核心概念和具體的使用方法。

2.1zeppelin簡介

2.2.1 Interpreter

Interpreter是zeppelin最核心的概念,zeppelin允許任何語言和資料處理框架以interpreter的方式整合進來,這構建了zeppelin強大功能的基礎。

zeppelin提供了大量的各種語言和框架的可以直接使用的interpreter,在安裝zeppelin時可以選擇安裝包含所有interpreter的安裝包,或者在安裝後透過。/bin/install-interpreter。sh指令碼安裝指定名稱的interpreter。另外,你也可以參照官網上的文件,編寫自己的interpreter,擴充套件zeppelin的功能。

在使用interpreter之前需要進行一些設定,如對於spark interpreter來說,需要設定spark的安裝目錄、提交作業的地址、driver和excutor的記憶體等資訊。具體如何設定,在官網文件中都有給出詳細說明。

在使用具體的interpreter時,只需要在程式碼的首行新增%加上具體的interpreter名稱即可(首行不能有其他內容)。如使用spark時,在首行新增%spark,使用sparksql時,在首行新增%sql即可,使用pyspark,在首行新增%pyspark。如果設定了預設使用spark,則可以省略不寫。

2.2.2 Note&Paragraph

Note頁面是zeppelin使用頻率最高的頁面,這個頁面是使用者的主要操作介面,它有非常多的功能,我們在下一章節頁面介紹時會詳細介紹。note頁面包含多個paragraph,每個paragraph內可以寫程式碼。上面我們提到的interpreter標識就是寫在paragraph的首行的,每個paragraph內只能使用一種interpreter,但是不同的paragraph可以使用不同的interpreter,即一個note內可以同時存在多個使用不同interpreter的paragraph。

zeppelin是以paragraph為最小執行單位的。對於spark interpreter來說,同一個使用者同一時間,只能有一個paragraph處於執行狀態(running),如果這時運行了其他的寫了spark程式碼的paragraph,那麼它將處於等待狀態(pending),直到第一個paragraph執行結束後,它才會開始執行。當然,執行狀態是可以被中斷的。

2.2.3 Dynamic forms

動態表單(dynamic form)是zeppelin提供的一項非常實用的功能,允許你在程式碼或者SQL中使用變數,在執行前透過手動輸入變數值,然後執行時動態替換程式碼或者SQL中的變數,避免了反覆修改程式碼或SQL的麻煩。具體示例如下:

大資料分析工程師入門11-Hue&Zeppelin

如果只有圖中條件的值發生變化時,只需要在下方的輸入框中輸入新的值,直接執行就可以了,非常的方便。只要你在程式碼或SQL中使用類似${argName}的形式,那麼就會被識別為動態表單,如果下方沒有出現輸入框,可以先執行一下,輸入框就會出現了。

動態表單還有其他一些用法,更多詳細資訊可以查閱官方文件(https://zeppelin。apache。org/docs/0。8。1/usage/dynamic_form/intro。html)。

2.3zeppelin頁面介紹

zeppelin的功能是很強大的,因此頁面也比較多,這裡我們只介紹最常用的幾個頁面。

2.3.1 主頁

大資料分析工程師入門11-Hue&Zeppelin

頂部導航欄上標記1的位置,點選後會展開現有note的列表,與標記5區域展示的內容一致,主要作用是為了方便你處在某個note頁面中時,可以不用回到首頁而方便地切換到其他note。

點選標記2的位置,會跳轉到job頁面,這個頁面你可以檢視note各paragraph的最後一次執行狀態,並可透過點選圖示跳轉到指定的note中的paragraph位置,我們通常可以利用這個頁面檢視定時排程任務的執行狀態。

標記3位置展示的是與ZeppelinServer的連線狀態,綠色表示正常,當連接出現異常時,這裡會變成紅色。點選標記4的位置,可以跳轉到interpreter的配置頁面,我們在2。3。4小節會再詳細講。

點選標記6位置的按鈕可以建立一個全新的note,這個按鈕在上述提到的標記1展開的列表中也有。當你把滑鼠懸停在標記5區域的某個note名字上時,後面會出現三個小按鈕,如標記7位置所示,分別對應重新命名、清空輸出和移到回收站操作。

在標記3的左邊有個搜尋框,這裡可以進行全域性搜尋,例如你只記得程式碼中的某個片段,但是不記得具體寫在哪個note中,就可以透過這裡搜尋出對應的note,點選note的名稱便可以直接跳轉進去。如下所示:

大資料分析工程師入門11-Hue&Zeppelin

2.3.2 note頁

大資料分析工程師入門11-Hue&Zeppelin

頂部導航欄和首頁的導航欄作用完全相同,這裡就不再重複講了。標記1的位置展示的是note的名字,建議大家要起一個辨識度比較高的名字,不要太隨意,不然後續查詢程式碼時非常費勁。標記1右側為工具欄,我們來逐個介紹下。標記2區域中的按鈕是針對所有paragraph生效的,從左至右依次為,執行所有paragraph、顯示或隱藏程式碼、顯示或隱藏輸出結果、清空所有輸出結果、克隆當前note頁、匯出當前note頁、切換為私有模式。標記3區域提供了版本控制功能。標記4區域內按鈕,分別是將當前note移動到回收站和對當前note做定時排程。標記5區域的功能依次為,展示快捷鍵、interpreter繫結、note許可權管理和主題模式選擇。

這裡我們簡單講下interpreter繫結介面,點選下圖中箭頭位置可以開啟繫結介面。介面中展示的是所有你安裝的interpreter組,藍色表示在本note中可以使用,點選藍色方框後會變成白色,表示和當前note解綁,在當前note中不可使用。另外,可以透過拖拽改變他們的順序,處於最頂上的那個方框裡的第一個直譯器就是預設直譯器,當你在paragraph中不指定直譯器時,就會使用這個預設直譯器。點選方框前面的重新整理按鈕,會重啟對應的interpreter。

大資料分析工程師入門11-Hue&Zeppelin

在note頁面的下方所有區域為paragraph區,我們在下一小節單獨來講下。

2.3.3 paragraph

大資料分析工程師入門11-Hue&Zeppelin

標記1區域為程式碼編輯區,你在paragraph的程式碼編輯區中的所有編輯操作都是自動儲存的,而且zeppelin還提供了針對不同語言的語法高亮,非常的好用。標記2為命令區,從左只有依次為執行按鈕、隱藏編輯區、隱藏輸出、設定。點選執行按鈕後,編輯區的程式碼會被執行,在執行結束前,如果再點選一次,則會中止程式碼的執行。點選設定按鈕後會彈出下面展示的設定選項介面,這裡重點關注下標記4選項,可以展示title,這樣我們就可以給我們的每個paragraph起一個名字或寫一句描述,提高辨識度。標記5的區域展示的是上次執行花費的時間,以及程式碼的最後更新時間等資訊。

標記3的區域為結果展示區,在紅框上面的一排按鈕為視覺化操作相關的按鈕,大家可以嘗試地去用一下,用zeppelin可以完成常用基本圖形的視覺化。如果你的程式碼有報錯,錯誤資訊也會在這個區域展示。

paragraph是我們工作的核心區域,它的功能簡潔而強大,新增paragraph也是非常方便的,你可以點選任意paragraph的頂部或底部間隙來插入一個新的paragraph,如下圖所示:

大資料分析工程師入門11-Hue&Zeppelin

標記6位置即新增一個paragraph的按鈕,預設是隱藏的,滑鼠懸停在這裡就會顯示。標記7位置演示了展示錯誤資訊的功能。

2.3.4 interpreter頁

透過2。3。1小節中講到的點選標記4的位置,可以跳轉到interpreter頁,當然啦,前提是你有這個頁面的訪問許可權,具體頁面的形式如下所示。

大資料分析工程師入門11-Hue&Zeppelin

標記1區域為功能按鈕,從左到右依次為跳到SparkUI介面、編輯spark interpreter的相關屬性、重啟spark interpreter(該動作同時會重啟Spark client端,即SparkSubmit程序)、移除spark interpreter。標記2區域為設定spark interpreter例項化SparkSubmit程序的方式,圖中設定結果的含義為每個使用者都擁有獨立的SparkSubmit程序,他們是互相隔離的。標記3區域的作用為設定spark的相關屬性,如master地址、driver和executor記憶體等,修改設定後需要重啟spark interpreter才能生效。

03

Hue&Zeppelin異同點

透過正文對Hue和Zeppelin的使用說明,相信大家對它們已經有了一定的瞭解,如開篇跟大家說的,它們都是很好的能夠快速響應臨時需求和很快得到查詢結果的Web UI工具。

那麼,它們有什麼異同點呢?分以下幾個方面跟大家總結一下。

1功能

(1)Zeppelin和Hue都能提供一定的資料查詢和視覺化的功能,都提供了多種圖形化資料表示形式。

(2)Zeppelin支援的後端資料查詢程式較多。

(3)Zeppelin只提供了單一的資料處理功能,包括上文提到的資料提取、資料發現、資料分析、資料視覺化等都屬於資料處理的範疇。而Hue的功能相對豐富的多,除了類似的資料處理,還有元資料管理、Oozie工作流管理、作業管理、使用者管理、Sqoop整合等很多管理功能。從這點看,Zeppelin只是一個數據處理工具,而Hue更像是一個綜合管理工具。

2架構

(1)Zeppelin採用外掛式的直譯器,透過外掛開發,可以新增任何後端語言和資料處理程式。相對來說更獨立和開放。

(2)Hue與Hadoop生態圈的其它元件密切相關,一般都與CDH(Cloudera發行版(Cloudera’s DistributionIncluding Apache Hadoop,簡稱 CDH ))一同部署。

3使用場景

(1)Zeppelin適合單一資料處理、但後端處理語言繁多的場景,尤其適合Spark。

(2)Hue適合與Hadoop叢集的多個元件互動、如Oozie工作流、Sqoop等聯合處理資料的場景,尤其適合與Impala協同工作。

小結

本文主要給大家介紹了兩種日常資料分析工作中用來快速處理臨時需求的Web UI工具-Hue&Zeppelin。

希望閱讀完本文的小夥伴對於這兩個工具的使用能夠快速上手哦。

-end-

參考文獻:

[1]《基於hadoop生態圈的資料倉庫實踐 —— OLAP與資料視覺化》

作者 wzy0623

https://blog。csdn。net/wzy0623/article/details/52370045

[2] zeppelin官網,http://zeppelin。apache。org