HIVE與PIG對比
阿新 • • 發佈:2019-01-02
什麼是HIVE
hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。hive參考手冊
什麼是pig
pig是在HDFS和MapReduce之上的資料流處理語言(指令碼語言),它將資料流處理翻譯成多個MapReduce函式,提供更高層次的抽象將程式設計師從具體的程式設計中解放出來。pig參考手冊
不同的方式做同樣的事情(Two ways of doing same thing)
1、都是使用高層次的語言生成MapReduce任務
2、都使Users不用瞭解MapReduce與HDFS的細節
基本資訊對比
HIVE |
Pig |
|
---|---|---|
開發者 |
|
Yahoo! |
語言 |
HiveQL |
Pig Latin |
語言型別 |
類似SQL查詢語言 Select * from mytable |
資料流處理語言,由一系列的operation和transformation組成。 每個操作或變換對輸入進行資料處理,然後產生輸出結果 A = LOAD ‘mydata’ AS (Col1:chararray, Col2:int) B = GROUP A BY (Col2) Dump B |
使用者 |
在Analysts中更流行 | 在Programmer與Researcher中更流行 |
使用模式 |
Analysts:生成日常報表 |
Programmer:寫複雜的資料管道 Researcher:特設分析(ad-hoc),例如機器學習 |
發展方向 |
Hive朝著資料倉庫的方向發展, 使用者要求與其他系統更好的結合(O/JDBC) |
Pig朝著語言的方向發展,使用者要求有更好的開發環境 例如偵錯程式,編輯器 |
細節對比
特性 |
HIVE |
Pig |
---|---|---|
模式/型別(Schemas/Types) |
支援(顯示的) |
支援(隱式的) |
分割槽(partitions) |
支援 | 不支援 |
使用者自定義函式(UDF) |
支援(Java) |
支援(Java) |
自定義序列化(Serializer/Deserializer) |
支援 |
支援 |
直接訪問DFS |
支援(隱式的) |
支援(顯式的) |
Join/Order/Sort操作 |
支援 |
支援 |
Shell命令 |
支援 |
支援 |
網路介面 |
支援 |
不支援 |
JDBC/ODBC |
支援(有限的) |
不支援 |
1、兩者均不支援事物與索引,全盤掃描是常態
2、兩者均不支援隨機讀與實時查詢
總結
直接使用Hadoop的Java APIs實現MapReduce任務是乏味和容易出錯的,同時也限制了程式設計的靈活性。於是Hadoop提供了兩個解決方案使得程式設計變得更加容易,即Hive與Pig。
Hive主要用於靜態的結構以及需要經常分析的工作,並且Hive與SQL相似促使其成為Hadoop與其他BI(商業智慧)工具結合的理想交集。
Pig相比Hive相對輕量,Pig賦予開發人員在大資料集領域更多的靈活性,並允許開發簡潔的指令碼用於轉換資料流以便嵌入到較大的應用程式。