[Hadoop]Pig與Hive的區別

大搜車-自娛發表於2012-07-20
請允許我很無聊的把飛機和火車拿來做比較,因為2者根本沒有深入的可比性,雖然兩者都是一種高速的交通工具,但是具體的作用範圍是截然不同的,就像Hive和Pig都是Hadoop中的專案,並且Hive和pig有很多共同點,但Hive還似乎有點資料庫的影子,而Pig基本就是一個對MapReduce實現的工具(指令碼)。兩者都擁有自己的表達語言,其目的是將MapReduce的實現進行簡化,並且讀寫運算元據最終都是儲存在HDFS分散式檔案系統上。看起來Pig和Hive有些類似的地方,但也有些不同,來做一個簡單的比較,先來看一張圖:

檢視大圖請點選這裡

[img]http://a7l8ig.bay.livefilestore.com/y1pUGvyQ6NonRUzOsJyLxonhejIlKFoCz2SbjlVONqcAk2AU51BuRSTkPWBFBDsw0hpgmfbBwGsLC-WQeBmTA4XAeKPqKul-n9s/pig-vs-hive.png?psid=1[/img]

再讓我說幾句廢話:
Language
在Hive中可以執行 插入/刪除 等操作,但是Pig中我沒有發現有可以 插入 資料的方法,請允許我暫且認為這是最大的不同點吧。

Schemas
Hive中至少還有一個“表”的概念,但是Pig中我認為是基本沒有表的概念,所謂的表建立在Pig Latin指令碼中,對與Pig更不要提metadata了。

Partitions
Pig中沒有表的概念,所以說到分割槽對於Pig來說基本免談,如果跟Hive說“分割槽”(Partition)他還是能明白的。

Server
Hive可以依託於Thrift啟動一個伺服器,提供遠端呼叫。 找了半天壓根沒有發現Pig有這樣的功能,如果你有新發現可以告訴我,就好像有人開發了一個Hive的REST

Shell
在Pig 你可以執行一些個 ls 、cat 這樣很經典、很cool的命令,但是在使用Hive的時候我壓根就沒有想過有這樣的需求。

Web Interface
Hive有,Pig無

JDBC/ODBC
Pig無,Hive有

相關文章