首頁技術文章正文

云計算大數據培訓之大數據Hadoop生態(tài)圈:Pig(1)

更新時間:2017-09-01 來源:黑馬程序員云計算大數據培訓學院 瀏覽量:

一  Pig概述

1-1 組成

Pig包括 兩部分

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

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


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


1-2 作用

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

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

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

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


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


 但是,Pig并不適合處理所有的“數據處理”任務。和MapReducer一樣,它是為數據 批處理 而設計的,如果想執(zhí)行的查詢只涉及一個大型數據集的一小部分數據,Pig的實現不是很好, 因為它要掃描整個數據集或其中的很大一部分。


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