hadoop家族之pig入門


  昨天成功運行第一個在hadoop集群上面的python版本的wordcount,今天白天繼續看網上提供的文檔。下午上頭給定的回復是把hadoop家族都熟悉一下,那就恭敬不如從命,開始學習pig吧~

  這一年多的編程之路讓我知道學習任何一門新的技術的最入門的方式就看文檔,let's geting started!

  首先聲明一下我的環境是在公司布置好的集群上面運行的程序,因此各位不願意配置環境又木有條件的可以在cloudera提供的虛擬機配置的環境下跑程序。在進入公司的第一天就聽說他們在用pig處理數據,說實在話當初我連hadoop有哪些成員都不知道,也是這兩周各種google才知其皮毛,由前兩天的煩躁慢慢安靜下來,這也是程序員的樂趣吧,知足者常樂><

  pig其實並不是什么高大上的東西,只是為了大大的簡化mapreduce的一些繁瑣的key,value處理而直接處理數據的一個類sql語言,如果你學過sql語句,那么學習pig將會順手拈來。只不過,我在學習的過程中遇到一兩個錯誤導致耽擱了那么一兩個小時的學習效率因此記錄下來,希望能給后來者一個warning~

  類似於一般的sql語句,pig也有自己的一些operations,請看下圖(圖片來源於ibm

  你可以通過很多模式執行pig的latin語句以及命令,如下列表所示:

  我們主要分為交互式模式和命令行批量模式(個人理解),執行環境目前只接觸了本地模式和mapreduce的集群模式。下面的知識都是介紹在集群下交互式和腳本跑pig這兩種情況。

一、shell下進行交互式運行pig

  在命令行直接輸入pig就可以進入shell模式,關於這個shell下可執行的腳本參數可以help查詢一下,接下來在運行pig的latin語句前你需要確保你的環境是正確的。參考:ibm中文社區文檔

1、確保你此時的hadoop是連接的,已經啟動了的:

在命令行下輸入如下命令會返回hdfs系統下根目錄的文件夾情況:

$ hadoop dfs -ls /

2、進入在命令行輸入‘pig’進入mapreduce模式pig的grunt shell界面,然后在該界面下進入hdfs系統目錄:

$ pig

grunt>cd hdfs:///  --進入根目錄

  比如上圖中,第一行命令顯示的當前路徑,第二行通過cd命令進入hdfs的根目錄,當然接下來的運行環境都是在’/user/wuying/‘這個目錄下運行一次我會把數據‘passwd’文件從本地的目錄‘/etc/passwd’上傳到hdfs系統下的‘/user/wuying/’路徑下:

grunt> copyFromLocal /etc/passwd passwd --從本地上傳文件到hdfs上
grunt> ls --查看當前目錄下是否存在passwd文件
grunt> cat passwd --查看passwd文件格式


 

 

  根據上圖的passwd文件內容顯示,該文件每一行格式類似,都是用‘:‘分割的數據,類似於sql中的數據屬性,可以通過as關鍵字將該數據賦予不同的字段和類型,當然這里為了方便測試,進食將數據按照':'分割,下面是latin語句:

grunt> A = load 'passwd' using PigStorage(':');  --加載passwd文件,並用冒號’:‘將數據分離為多個字段
grunt> B = foreach A generate $0 as id; --將每一次迭代的第一個元祖數據作為id
grunt> dump B; 在命令行輸出結果

  若執行成功,id如上圖所示輸出。

二、批量模式下運行腳本*.pig文件

  首先,在本地編輯myscript.pig腳本文件:

/* script.pig */

A = load 'passwd' using PigStorage(':');  
B = foreach A generate $0 as id;  
store B into ‘id.out’;  -- 將結果寫入到id.out文件

  然后,將該腳本上傳到hdfs文件系統下的’/user/wuying‘路徑下,並運行該文件:

  因為我的腳步是存放在test文件夾下的,因此你記得到時候把文件上傳到用戶目錄就好了~若是報錯,請查看log信息,找到你的error,all is well~

  最后上一張成功執行的結果截圖:

  好冷,下班咯,回家~

最后貼上以下鏈接供參考:

Apache pig 官方文檔

IBM中文社區文檔

錯誤參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM