首頁技術文章正文

云計算大數據培訓之大數據Hadoop生態(tài)圈:Pig(2)

更新時間:2017-09-01 來源:黑馬程序員云計算大數據培訓學院 瀏覽量:

Pig與Hive 誰才是未來?

2-1 背景

SQL

結構化查詢語言(SQL)是程序員的最佳伴侶,主要用于處理和提取數據。大數據改變了數據處理和可視化的方式。但是SQL嚴格的關系數據庫模式和聲明特性依然是數據分析的標桿。盡管SQL市場廣闊,但是大數據也對SQL的功能和性能提出了挑戰(zhàn)。


Pig

Apache Pig適合有SQL背景的程序員學習,其有以下兩個特點:

  1.放寬了對數據存儲的要求

  2.可以操作大型數據集

除了上述特點,它還有很好的可擴展性和性能優(yōu)化。 Apache Pig允許開發(fā)人員跟蹤多個查詢方法,從而降低了數據的重復檢索。它支持復合數據類型(Map、Tuple、Bag),支持常見的數據操作,例如篩選、排序和Join。Apache Pig的這些特性得到了世界各地用戶的認可。


Hive

盡管Apache Pig性能優(yōu)異,但是它要求程序員要掌握SQL之外的知識。Hive和SQL非常相似,雖然Hive查詢語言(HQL)有一定的局限性,但它仍然是非常好用的。Hive為MapReduce提供了很好的開源實現。它在分布式處理數據方面表現很好,不像SQL需要嚴格遵守模式。

數據的提取、處理和分析沒有一個萬全之策,需要綜合多種因素來選擇,例如數據存儲方法,編程語言結構以及預期的結果。下面我們就來對比一下Pig、Hive和SQL,看看它們各自都適合什么樣的場景。


2-2 Pig工作原理

Apache PIG提供一套高級語言平臺,用于對結構化與非結構化數據集進行操作與分析。這種語言被稱為Pig Latin,其屬于一種腳本形式,可直接立足于PIG shell執(zhí)行或者通過Pig Server進行觸發(fā)。用戶所創(chuàng)建的腳本會在初始階段由Pig Latin處理引擎進行語義有效性解析,而后被轉換為包含整體執(zhí)行初始邏輯的定向非循環(huán)圖(簡稱DAG)。


另外,這套處理引擎亦可接受DAG并在內部執(zhí)行計劃優(yōu)化——具體優(yōu)化方式包括PIG程序方法以及惰性計算。


為了理解這一優(yōu)化機制的原理,我們假定用戶編寫了一套腳本,該腳本對兩套數據集進行一項連接操作,而后是一條過濾標準。PIG優(yōu)化器能夠驗證過濾操作是否能夠在連接之前進行,從而保證連接負載最小化。如果可以,則其將據此進行邏輯規(guī)劃設計。如此一來,用戶即可專注于最終結果,而非將精力分散在性能保障身上。


只有在經過完全優(yōu)化的邏輯規(guī)劃準備就緒之后,編譯才會生效。其負責生成物理規(guī)劃,即為最終駐留于HDFS中的數據分配與之交互的執(zhí)行引擎。


2-3 Hive工作原理

Apache Hive在本質上屬于一套數據倉儲平臺,用于同存儲在HDFS或者HBase內的大規(guī)模結構化數據集進行交互。Hive查詢語言在這一點上類似于SQL,二者都能夠與Hadoop實現良好集成。而Pig則不同,其執(zhí)行流程為純聲明性,因此適合供數據科學家用于實現數據呈現與分析。


在與Hive進行交互時,用戶可以直接通過Hive命令行界面直接接入,或者與Hiveserver交互。任何提交查詢都會首先由該驅動程序占用,而后由編譯器進行語法及語義驗證。另外,Hive metastore負責保存全部與Hive相關數據的模式/映射關系,其在驗證查詢中信息語義方面扮演著重要角色。


該驅動立足于語義之上執(zhí)行優(yōu)化,同時負責準備執(zhí)行規(guī)劃并將其提交至HQL查詢引擎。這套引擎依賴于實際執(zhí)行引擎(例如MapReduce與Spark等)。任何對模式的成功修改都會通過HQL處理引擎被更新至metastore當中。



2-4 總結

Hive更適合于數據倉庫的任務,Hive主要用于靜態(tài)的結構以及需要經常分析的工作。Hive與SQL相似促使 其成為Hadoop與其他BI工具結合的理想交集。而且很多企業(yè)都需要對歷史數據進行分析,Hive就是一款分析歷史數據的利器。但是Hive只有在結構化數據的情況下才能大顯神威。Hive的軟肋是實時分析,如果想要進行實時分析,可以采用HBase。


Pig賦予開發(fā)人員在大數據集領域更多的靈活性,并允許開發(fā)簡潔的腳本用于轉換數據流以便嵌入到較大的 應用程序。并且Apache Pig適用于非結構化的數據集,可以充分利用SQL。Pig無需構建MapReduce任務,如果你有SQL學習的背景,那么入門會非???。


Pig相比Hive相對輕量,它主要的優(yōu)勢是相比于直接使用Hadoop Java APIs可大幅削減代碼量。正因為如此,Pig仍然是吸引大量的軟件開發(fā)人員。


所以二者皆提供出色的靈活性以及可擴展性,用于實現各類定制化功能。另外,二者也擁有自己的明確角色定位,因此其具體優(yōu)劣完全取決于您在項目當中的實際要求。

本文版權歸黑馬程序員云計算大數據培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:黑馬程序員云計算大數據培訓學院
首發(fā):http://cloud.itheima.com/ 
分享到:
在線咨詢 我要報名
和我們在線交談!