
Apache PIG提供一套高級語言平臺,用于對結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)集進行操作與分析。這種語言被稱為Pig Latin,其屬于一種腳本形式,可直接立足于PIG shell執(zhí)行或者通過Pig Server進行觸發(fā)。用戶所創(chuàng)建的腳本會在初始階段由Pig Latin處理引擎進行語義有效性解析,而后被轉(zhuǎn)換為包含整體執(zhí)行初始邏輯的定向非循環(huán)圖(簡稱DAG)。另外,這套處理引擎亦可接受DAG并在內(nèi)部執(zhí)行計劃優(yōu)化——具體優(yōu)化方式包括PIG程序方法以及惰性計算。
為了理解這一優(yōu)化機制的原理,我們假定用戶編寫了一套腳本,該腳本對兩套數(shù)據(jù)集進行一項連接操作,而后是一條過濾標準。PIG優(yōu)化器能夠驗證過濾操作是否能夠在連接之前進行,從而保證連接負載最小化。如果可以,則其將據(jù)此進行邏輯規(guī)劃設(shè)計。如此一來,用戶即可專注于最終結(jié)果,而非將精力分散在性能保障身上。
只有在經(jīng)過完全優(yōu)化的邏輯規(guī)劃準備就緒之后,編譯才會生效。其負責生成物理規(guī)劃,即為最終駐留于HDFS中的數(shù)據(jù)分配與之交互的執(zhí)行引擎。
總結(jié):
Pig與Hive無疑已經(jīng)成為大數(shù)據(jù)世界中的重要組成部分。二者皆提供出色的靈活性以及可擴展性,用于實現(xiàn)各類定制化功能。另外,二者也擁有自己的明確角色定位,因此其具體優(yōu)劣完全取決于您在項目當中的實際要求。