首頁技術(shù)文章正文

云計(jì)算大數(shù)據(jù)培訓(xùn)之大數(shù)據(jù)Hadoop生態(tài)圈:Pig(1)

更新時(shí)間:2017-09-01 來源:黑馬程序員云計(jì)算大數(shù)據(jù)培訓(xùn)學(xué)院 瀏覽量:

一  Pig概述

1-1 組成

Pig包括 兩部分

1:用于描述數(shù)據(jù)流的語言,稱為 Pig Latin (拉丁豬,個人翻譯)

2:用于運(yùn)行PigLatin程序的 執(zhí)行環(huán)境 。一個是 本地 的單JVM執(zhí)行環(huán)境,一個就是在 hadoop集群上 的分布式執(zhí)行環(huán)境。


Pig  Latin程序是由一系列的" 操作"(operation)或"變換"(transformation)組成 。每個操作或變換對輸入進(jìn)行 數(shù)據(jù)處理 ,然后產(chǎn)生 輸出的結(jié)果 。這些操作整體上描述了一個 數(shù)據(jù)流 ,Pig執(zhí)行的環(huán)境把數(shù)據(jù)流翻譯為可執(zhí)行的內(nèi)部表示,并運(yùn)行它。在Pig的內(nèi)部,這些變換和操作被轉(zhuǎn)換成一系列的MapReducer,但是我們一般情況下并不知道這些轉(zhuǎn)換是怎么進(jìn)行的, 我們的主要的精力就花在數(shù)據(jù)上,而不是執(zhí)行的細(xì)節(jié)上面。


1-2 作用

那么雅虎公司主要使用Pig來干什么呢? 

1)吸收和分析用戶的行為日志數(shù)據(jù)(點(diǎn)擊流分析、搜索內(nèi)容分析等),改進(jìn)匹配和排名算法,以提高檢索和廣告業(yè)務(wù)的質(zhì)量。 
2)構(gòu)建和更新search index。對于web-crawler抓取了的內(nèi)容是一個流數(shù)據(jù)的形式,這包括去冗余、鏈接分析、內(nèi)容分類、基于點(diǎn)擊次數(shù)的受歡迎程度計(jì)算(PageRank)、最后建立倒排表。 
3)處理半結(jié)構(gòu)化數(shù)據(jù)訂閱(data seeds)服務(wù)。包括:deduplcaitin(去冗余),geographic location resolution,以及 named entity recognition. 

1-3 優(yōu)勢與不足

MapReducer能夠讓我們自己定義 連續(xù)執(zhí)行的map和reduce函數(shù) ,但是數(shù)據(jù)處理往往需要很多的MapReducer過程才能實(shí)現(xiàn),所以將數(shù)據(jù)處理要求改寫成MapReducer模式是很 復(fù)雜的 。和MapReducer相比,Pig提供了更加 豐富的數(shù)據(jù)結(jié)構(gòu) ,一般都是 多值 和 嵌套 的數(shù)據(jù)結(jié)構(gòu)。Pig還提供了一套更強(qiáng)大的 數(shù)據(jù)交換操作 ,包括了MapReducer中被忽視的" join "操作


使用Pig來操作hadoop處理海量數(shù)據(jù),是非常簡單的,如果沒有Pig,我們就得手寫MapReduce代碼,這可是一件非常繁瑣的事,因?yàn)镸apReduce的任務(wù)職責(zé)非常明確,清洗數(shù)據(jù)得一個job,處理得一個job,過濾得一個job,統(tǒng)計(jì)得一個job,排序得一個job,每次只要改動很小的一個地方,就得重新編譯整個job,然后打成jar提交到Hadoop集群上運(yùn)行,是非常繁瑣的,調(diào)試還很困難。


 但是,Pig并不適合處理所有的“數(shù)據(jù)處理”任務(wù)。和MapReducer一樣,它是為數(shù)據(jù) 批處理 而設(shè)計(jì)的,如果想執(zhí)行的查詢只涉及一個大型數(shù)據(jù)集的一小部分?jǐn)?shù)據(jù),Pig的實(shí)現(xiàn)不是很好, 因?yàn)樗獟呙枵麄€數(shù)據(jù)集或其中的很大一部分。


本文版權(quán)歸黑馬程序員云計(jì)算大數(shù)據(jù)培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:黑馬程序員云計(jì)算大數(shù)據(jù)培訓(xùn)學(xué)院
首發(fā):http://cloud.itheima.com/ 
分享到:
在線咨詢 我要報(bào)名
和我們在線交談!