Pig 初識

Pig是什麼?

Pig是一個腳本語言,可以把它看作一個並行處理大數據集的平臺,通過它可以對數據進行group、filter、sort、join等操作,有些類似於SQL,允許用戶自定義函數來處理數據。它主要運行在Hadoop集羣上,來簡化MapReduce程序的開發。

工作機制

那麼它是怎麼處理數據的?又是怎麼在Hadoop集羣上運行的呢?

Pig有兩部分組成:一部分爲執行處理數據的語言,叫做Pig Latin。另一部分爲運行Pig Litin程序的環境。

Pig Latin具有豐富的數據類型、數據結構、一系列處理數據的函數等。

運行環境負責將Pig Latin程序轉換爲可執行的形式,然後運行。運行Pig Latin程序通常有兩種模式:一種爲本地運行模式。另一種爲MapReduce模式,運行在Hadoop集羣上,默認爲運行在Hadoop集羣上,在幕後會將Pig Latin程序轉化爲一系列MapReduce Job來執行。作爲一個程序員來說不需要關注這些,只需關注數據而不是它是怎麼執行的。

相比編寫MapReduce程序,編寫Pig Latin程序要簡潔高效很多。通常編寫一個MapReduce程序的時間要很長:編寫mapper和reducer、編譯、打包、提交Job和檢索結果等都是比較耗時的操作。對於Pig來說,這些繁瑣的操作可以通過幾條腳本指令就可以完成。

和關係型數據庫的區別

Pig的Pig Latin有些類似於SQL,比如和SQL語句中相似的一些操作符:GROUP BY、DESCRIBE等。但它和RDBMS(關係型數據庫)還是有些不同的。

兩者最明顯的區別是Pig Latin是一種數據流式的編程語言(即程序的邏輯和數據有絕對關係,數據的流動順序、先後次序,決定着程序的運行邏輯),而SQL是一種聲明式編程語言(關於聲明式編程語言可查看這篇文章:http://blog.csdn.net/qiruiduni/article/details/49638525)。也就是說,Pig Latin編程是在輸入數據上執行的一步一步操作集,它的每一步都是一個轉換。而SQL語句是一組約束,一起定義輸出。

RDBMS在表中存儲數據,並且有嚴格的預定義Schema,而Pig對處理的數據相對寬鬆,可以在運行時定義Schema,並且是可選的。

RDBMS支持在線操作、低延遲查詢、事務、索引等特性,這些Pig都不具有。

Pig支持複雜的、嵌套的數據結構。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章