W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
用于使用Pig分析Hadoop中的數(shù)據(jù)的語言稱為 Pig Latin ,是一種高級數(shù)據(jù)處理語言,它提供了一組豐富的數(shù)據(jù)類型和操作符來對數(shù)據(jù)執(zhí)行各種操作。
要執(zhí)行特定任務時,程序員使用Pig,需要用Pig Latin語言編寫Pig腳本,并使用任何執(zhí)行機制(Grunt Shell,UDFs,Embedded)執(zhí)行它們。執(zhí)行后,這些腳本將通過應用Pig框架的一系列轉換來生成所需的輸出。
在內(nèi)部,Apache Pig將這些腳本轉換為一系列MapReduce作業(yè),因此,它使程序員的工作變得容易。Apache Pig的架構如下所示。
如圖所示,Apache Pig框架中有各種組件。讓我們來看看主要的組件。
最初,Pig腳本由解析器處理,它檢查腳本的語法,類型檢查和其他雜項檢查。解析器的輸出將是DAG(有向無環(huán)圖),它表示Pig Latin語句和邏輯運算符。在DAG中,腳本的邏輯運算符表示為節(jié)點,數(shù)據(jù)流表示為邊。
邏輯計劃(DAG)傳遞到邏輯優(yōu)化器,邏輯優(yōu)化器執(zhí)行邏輯優(yōu)化,例如投影和下推。
編譯器將優(yōu)化的邏輯計劃編譯為一系列MapReduce作業(yè)。
最后,MapReduce作業(yè)以排序順序提交到Hadoop。這些MapReduce作業(yè)在Hadoop上執(zhí)行,產(chǎn)生所需的結果。
Pig Latin的數(shù)據(jù)模型是完全嵌套的,它允許復雜的非原子數(shù)據(jù)類型,例如 map 和 tuple 。下面給出了Pig Latin數(shù)據(jù)模型的圖形表示。
Pig Latin中的任何單個值,無論其數(shù)據(jù)類型,都稱為 Atom 。它存儲為字符串,可以用作字符串和數(shù)字。int,long,float,double,chararray和bytearray是Pig的原子值。一條數(shù)據(jù)或一個簡單的原子值被稱為字段。例:“raja“或“30"
由有序字段集合形成的記錄稱為元組,字段可以是任何類型。元組與RDBMS表中的行類似。例:(Raja,30)
一個包是一組無序的元組。換句話說,元組(非唯一)的集合被稱為包。每個元組可以有任意數(shù)量的字段(靈活模式)。包由“{}"表示。它類似于RDBMS中的表,但是與RDBMS中的表不同,不需要每個元組包含相同數(shù)量的字段,或者相同位置(列)中的字段具有相同類型。
例:{(Raja,30),(Mohammad,45)}
包可以是關系中的字段;在這種情況下,它被稱為內(nèi)包(inner bag)。
例:{Raja,30, {9848022338,raja@gmail.com,} }
映射(或數(shù)據(jù)映射)是一組key-value對。key需要是chararray類型,且應該是唯一的。value可以是任何類型,它由“[]"表示,
例:[name#Raja,age#30]
一個關系是一個元組的包。Pig Latin中的關系是無序的(不能保證按任何特定順序處理元組)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: