勝還是平? Pig vs Hive!!!,pighive
翻譯自:http://www.aptibook.com/Articles/Pig-and-hive-advantages-disadvantages-features
這篇文章討論了pig和hive的特性。
開發人員通常處於選擇滿足業務需求的技術體系。 在hadoop體系中,pig和hive很相似,並能給出幾乎相同的結果,但是那種技術更適合特殊的業務情境了?這裡列出了pig和hive的一些對比。
PIG and Hive:
流類型:
Pig是過程式資料流語言。過程式語言通常按照一步一步的執行方式去編寫,你能夠控制和最佳化每一步。
Hive更像sql,因此,它是聲明式語言,你要指定需要做什麼而不是怎麼做。Hive依靠自己的最佳化器,因此hive中最佳化是比較難的。
易用性:
Pig擁有新而不同的文法,需要額外的時間去學習。
Hive更像sql,開發人員會更興奮的去使用hive.
一般情境:
推薦程式開發人員使用Pig。主要原因是它計算高效,當你的查詢有大量的join和filter時,pig更合適。
Hive更多的用於分析,它遵循Hadoop和DatawareHouse一些規則。一般更傾向使用Hive產生報表。如果你的查詢join和filters比較少可以繼續使用Hive,相反,如果查詢擁有很多join,Hive的效能也許會降低。
資料類型:
Pig能高效處理結構化和非結構化資料。
Hive能高效的處理結構化資料。
中介層:
Pig使用變數表示資料,當要儲存中間結果,可以很容易的用變數存起來並在以後引用。
Hive使用表表示資料,儲存中間結果比較困難,需要建立一個表,並從其他的表插入進去。因此,呈現一個複雜的查詢時,可能需要幾百行的代碼。
調試方式:
Pig可以使用本地模式調試。
Hive使用本來模式調試比較複雜並且很費時。
擴充性:
Pig中UDF很容易。
Hive中UDF相對麻煩。
維護性:
Pig比Hive差一點。
Hive比較簡單。
持久性:
Pig中可能不會保留變數的值,每一次你都需要重新執行pig代碼重新擷取變數值。
Hive中即使退出當前會話外部表格依然存在,因為外部表格依然指向HDFS檔案。
開發時間:
pig開發需要更多的時間,更多的依賴對pig的熟悉度。
SQL語句,開發時間很少。
相容性:
RDBMS與Pig相容有點複雜,因為pig的文法完全不同。
大部分在RDBMS中的sql可以在Hive中執行,只有少數需要修改。
資料量:
Pig處理大資料很高效。
Hive有時會記憶體泄露和不靠譜的效能,然而,有一些參數可以進行調整和定位問題。
巨頭支援:
Pig:Yahoo,Twitter, LinkedIn
Hive: FaceBook