在本教學中,我們將討論 Pig & Hive
在Map Reduce框架,需要的程式將其轉化為一系列 Map 和 Reduce階段。 但是,這不是一種程式設計模型,它被資料分析所熟悉。因此,為了彌補這一差距,一個抽象概念叫 Pig 建立在 Hadoop 之上。
Pig是一種高階程式設計語言,分析巨量資料集非常有用。 Pig 是雅虎努力開發的結果
Pig 使人們能夠更專注於分析大量資料集和花更少的時間來寫map-reduce程式。
類似豬吃東西,Pig 程式設計語言的目的是可以在任何型別的資料工作。
Pig 由兩部分組成:
Pig Latin 程式由一系列操作或變換應用到輸入資料,以產生輸出。這些操作描述被翻譯成可執行到資料流,由 Pig 環境執行。下面,這些轉換的結果是一系列的 MapReduce 作業,程式員是不知道的。所以,在某種程度上,Pig 允許程式員關注資料,而不是執行過程。
Pig Latin 是一種相對硬挺的語言,它採用熟悉的關鍵字來處理資料,例如,Join, Group 和 Filter。
執行模式:
Pig 有兩種執行模式:
在某種程度上資料集收集的大小並在行業用於商業智慧分析正在增長,它使傳統的資料倉庫解決方案更加昂貴。HADOOP與MapReduce框架,被用於大型資料集分析的替代解決方案。雖然,Hadoop 地龐大的資料集上工作證明是非常有用的,MapReduce框架是非常低階別並且它需要程式員編寫自定義程式,這導致難以維護和重用。 Hive 就是為程式員設計的。
Hive 演變為基於Hadoop的Map-Reduce 框架之上的資料倉庫解決方案。
Hive 提供了類似於SQL的宣告性語言,叫作:HiveQL, 用於表達的查詢。使用 Hive-SQL,使用者能夠非常容易地進行資料分析。
Hive 引擎編譯這些查詢到 map-reduce作業中並在 Hadoop 上執行。此外,自定義 map-reduce 指令碼,也可以插入查詢。Hive執行儲存在表中,它由基本資料型別,如陣列和對映集合的資料型別的資料。
組態單元帶有一個命令列shell介面,可用於建立表並執行查詢。
Hive 查詢語言是類似於SQL,它支援子查詢。通過Hive查詢語言,可以使用 MapReduce 跨Hive 表連線。它有類似函式簡單的SQL支援- CONCAT, SUBSTR, ROUND 等等, 聚合函式 - SUM, COUNT, MAX etc。它還支援GROUP BY和SORT BY子句。 另外,也可以在組態單元查詢語言編寫使用者定義的功能。
MapReduce,Pig 和 Hive 的比較
Sqoop |
Flume |
HDFS |
Sqoop用於從結構化資料源,例如,RDBMS匯入資料 |
Flume 用於移動批次流資料到HDFS |
HDFS使用 Hadoop 生態系統儲存資料的分散式檔案系統 |
Sqoop具有連線器的體系結構。連線器知道如何連線到相應的資料源並獲取資料 |
Flume 有一個基於代理的架構。這裡寫入程式碼(這被稱為“代理”),這需要處理取出資料 |
HDFS具有分散式體系結構,資料被分布在多個資料節點 |
HDFS 使用 Sqoop 將資料匯出到目的地 |
通過零個或更多個通道將資料流給HDFS |
HDFS是用於將資料儲存到最終目的地 |
Sqoop資料負載不事件驅動 |
Flume 資料負載可通過事件驅動 |
HDFS儲存通過任何方式提供給它的資料 |
為了從結構化資料源匯入資料,人們必須只使用Sqoop,因為它的連線器知道如何與結構化資料源進行互動並從中獲取資料 |
為了載入流資料,如微博產生的推文。或者登入Web伺服器的檔案,Flume 應都可以使用。Flume 代理是專門為獲取流資料而建立的。 |
HDFS擁有自己的內建shell命令將資料儲存。HDFS不能用於匯入結構化或流資料 |