Apache Pig的前世今生

2022-02-15 08:52:27 字數 1687 閱讀 5718

最近,散仙用了幾周的pig來處理分析我們**搜尋的日誌資料,感覺用起來很不錯,今天就寫篇筆記介紹下pig的由來,除了搞大資料的人,可能很少有人知道pig是幹啥的,包括一些是搞程式設計的,但不是搞大資料的,還包括一些既不是搞程式設計的,也不是搞大資料的,而是從事其他行業的朋友,所以很有可能望文生義,一看標題,就樂了,心裡就開始默默的翻譯了===》 apache 豬的筆記,看起來apache的豬,比較厲害啊,都能寫筆記了。

開個玩笑,下面進入正題,散仙,盡量寫的通俗易懂,讓大家看了之後都能夠理解這頭pig到底是幹什麼的。

pig最早是雅虎公司的乙個基於hadoop的並行處理架構,後來yahoo將pig捐獻給apache(乙個開源軟體的**組織)的乙個專案,由apache來負責維護,pig是乙個基於 hadoop的大規模資料分析平台,它提供的sql-like語言叫pig latin,該語言的編譯器會把類sql的資料分析請求轉換為一系列經過優化處理的mapreduce運算。pig為複雜的海量資料平行計算提供了乙個簡 易的操作和程式設計介面,這一點和facebook開源的hive(乙個以sql方式,操作hadoop的乙個開源框架)一樣簡潔,清晰,易上手! 

那麼雅虎公司主要使用pig來幹什麼呢? 

1)吸收和分析使用者的行為日誌資料(點選流分析、搜尋內容分析等),改進匹配和排名演算法,以提高檢索和廣告業務的質量。 

2)構建和更新search index。對於web-crawler抓取了的內容是乙個流資料的形式,這包括去冗餘、鏈結分析、內容分類、基於點選次數的受歡迎程度計算(pagerank)、最後建立倒排表。 

3)處理半結構化資料訂閱(data seeds)服務。包括:deduplcaitin(去冗餘),geographic location resolution,以及 named entity recognition. 

使用pig來操作hadoop處理海量資料,是非常簡單的,如果沒有pig,我們就得手寫mapreduce**,這可是一件非常繁瑣的事,因為mapreduce的任務職責非常明確,清洗資料得乙個job,處理得乙個job,過濾得乙個job,統計得乙個job,排序得乙個job,編寫dag(帶先後順序依賴的)作業很不方便,這還可以接受,但是每次只要改動很小的乙個地方,就得重新編譯整個job,然後打成jar提交到hadoop集群上執行,是非常繁瑣的,除錯還很困難,所以,在現在的大網際網路公司或者是電商公司裡,很少有純寫mapreduce來處理各種任務的,基本上都會使用一些工具或開源框架來操作。 

隨著,資料海嘯的來臨,傳統的db(oracle、db2)已經不能滿足海量資料處理的需求,mapreduce逐漸成為了資料處理的事實標準,被應用到各行各業中。所以,我們不再期望所有的客戶都能快速開發應用相關**,只能把客戶的工作變得簡單,就像使用sql語言,經過簡單培訓就可以「雲」上操作。

pig就是為了遮蔽mapreduce開發的繁瑣細節,為使用者提供pig latin這樣近sql語言處理能力,讓使用者可以更方便地處理海量資料。pig將sql語句翻譯成mr的作業的集合,並通過資料流的方式將其組合起來。 

pig的乙個簡單處理流程,如下所示: 

執行引擎如下所示:

LinkedList前世今生

1 linkedlist元素在內部儲存的實現,節點定義即指向前一元素的指標,後一元素的指標,當前元素的值。private static class entry 2 建立乙個空鍊錶。預設有個頭指標header。private transient entryheader new entry null,n...

前世今生 STL

嘛,string就是乙個用於字串處理的標準類庫,但是需要注意的是其速度可能會比直接操縱char陣列要慢一些。reverse這個方法是我一直都想找到但是沒有找到的,在判斷回文的時候格外好用。string s abcdef string ss s ss abcdef reverse ss.begin s...

位址 前世今生

alu arithemetic and logic unit 書面意思是 算術與邏輯部件,運算器,算術與邏輯單元,通俗來講 cpu處理的資料位數。從4位 8位 16位 32位,處理能力越來越強。發問 16位計算能力如何處理20位的位址呢?cs ip 是一組暫存器,用於告知 cpu 當前將要讀取的彙編...