2011-02-11 48 views
1

這個問題可能聽起來很刺激,實際上並沒有什麼關係。這是我與我的一位同事進行的一場小型辯論的衍生。他一直堅持認爲HIVE和PIG可以被稱爲單獨的「編程模型」,因爲當你編寫MapReduce作業時,你並不需要考慮MapReduce - 特別是如果你正在編寫HIVE。從程序員的角度來看,MapReduce部分是完全抽象的。它完全像SQL一樣。可以將PIG和HIVE稱爲單獨的編程模型嗎?

但我有點不同意,因爲用這些語言編寫的腳本最終會轉換爲多個mapreduce作業。因此,可以將這些稱爲更高級的編程語言,以針對相同的模型進行編程。從編程模型的角度來看,應該從待處理的底層數據的角度來看,而不是程序員。

您的意見是?

回答

2

我將其定義如下:HIVE和PIG在不同的抽象層次上。關閉類比是SQL和查詢執行計劃。它們都解決了數據庫查詢的相同問題,但是SQL是聲明性的,並且聲明瞭應該是結果,而查詢執行計劃指定了實現它的操作。在這個例子中,HIVE是SQL和PIG - 查詢執行計劃。
我們可以說HIVE是宣告性的,並且坐在較高的抽象層次上,然後是命令性的PIG。因此,邏輯上HIVE請求可以轉換爲PIG。

相關問題