勝還是平? Pig vs Hive

2021-07-03 09:19:03 字數 1343 閱讀 6526

翻譯自:

這篇文章討論了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