Apache Pig 架構(gòu)

2018-12-28 18:57 更新

用于使用Pig分析Hadoop中的數(shù)據(jù)的語言稱為 Pig Latin ,是一種高級(jí)數(shù)據(jù)處理語言,它提供了一組豐富的數(shù)據(jù)類型和操作符來對(duì)數(shù)據(jù)執(zhí)行各種操作。

要執(zhí)行特定任務(wù)時(shí),程序員使用Pig,需要用Pig Latin語言編寫Pig腳本,并使用任何執(zhí)行機(jī)制(Grunt Shell,UDFs,Embedded)執(zhí)行它們。執(zhí)行后,這些腳本將通過應(yīng)用Pig框架的一系列轉(zhuǎn)換來生成所需的輸出。

在內(nèi)部,Apache Pig將這些腳本轉(zhuǎn)換為一系列MapReduce作業(yè),因此,它使程序員的工作變得容易。Apache Pig的架構(gòu)如下所示。

Apache Pig架構(gòu)

Apache Pig組件

如圖所示,Apache Pig框架中有各種組件。讓我們來看看主要的組件。

Parser(解析器)

最初,Pig腳本由解析器處理,它檢查腳本的語法,類型檢查和其他雜項(xiàng)檢查。解析器的輸出將是DAG(有向無環(huán)圖),它表示Pig Latin語句和邏輯運(yùn)算符。在DAG中,腳本的邏輯運(yùn)算符表示為節(jié)點(diǎn),數(shù)據(jù)流表示為邊。

Optimizer(優(yōu)化器)

邏輯計(jì)劃(DAG)傳遞到邏輯優(yōu)化器,邏輯優(yōu)化器執(zhí)行邏輯優(yōu)化,例如投影和下推。

Compiler(編譯器)

編譯器將優(yōu)化的邏輯計(jì)劃編譯為一系列MapReduce作業(yè)。

Execution engine(執(zhí)行引擎)

最后,MapReduce作業(yè)以排序順序提交到Hadoop。這些MapReduce作業(yè)在Hadoop上執(zhí)行,產(chǎn)生所需的結(jié)果。

Pig Latin數(shù)據(jù)模型

Pig Latin的數(shù)據(jù)模型是完全嵌套的,它允許復(fù)雜的非原子數(shù)據(jù)類型,例如 map tuple 。下面給出了Pig Latin數(shù)據(jù)模型的圖形表示。

Pig Latin數(shù)據(jù)模型

Atom(原子)

Pig Latin中的任何單個(gè)值,無論其數(shù)據(jù)類型,都稱為 Atom 。它存儲(chǔ)為字符串,可以用作字符串和數(shù)字。int,long,float,double,chararray和bytearray是Pig的原子值。一條數(shù)據(jù)或一個(gè)簡(jiǎn)單的原子值被稱為字段:“raja“或“30"

Tuple(元組)

由有序字段集合形成的記錄稱為元組,字段可以是任何類型。元組與RDBMS表中的行類似。例:(Raja,30)

Bag(包)

一個(gè)包是一組無序的元組。換句話說,元組(非唯一)的集合被稱為包。每個(gè)元組可以有任意數(shù)量的字段(靈活模式)。包由“{}"表示。它類似于RDBMS中的表,但是與RDBMS中的表不同,不需要每個(gè)元組包含相同數(shù)量的字段,或者相同位置(列)中的字段具有相同類型。

:{(Raja,30),(Mohammad,45)}

包可以是關(guān)系中的字段;在這種情況下,它被稱為內(nèi)包(inner bag)。

:{Raja,30, {9848022338,raja@gmail.com,} }

Map(映射)

映射(或數(shù)據(jù)映射)是一組key-value對(duì)。key需要是chararray類型,且應(yīng)該是唯一的。value可以是任何類型,它由“[]"表示,

:[name#Raja,age#30]

Relation(關(guān)系)

一個(gè)關(guān)系是一個(gè)元組的包。Pig Latin中的關(guān)系是無序的(不能保證按任何特定順序處理元組)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)