pig專門用來處理來自於hdfs的資料,它提供了一套流式的資料處理語言,轉化為map-reduce來處理hdfs的資料;
pig包括用來描述資料分析程式的高階程式語言,以及對這些程式進行評估的基礎結構。pig突出的特點就是它的結構經得起
大量並行任務的檢驗,這使得它能夠處理大規模資料集。
使用pig命令直接進入命令列模式;
在命令列模式照樣可以使用hadoop管理hdfs的命令,如fs ls /,執行結果如上圖所示,
使用a = load '/user.data'來把hdfs中的資料載入到a中,並使用dump a來讀取出a中的資料資訊,此時會把讀取的任務做成乙個map-reduce的任務來
執行;
圖:程式最後的執行結果
load預設支援是以\t(製表符)分割的檔案,如果記錄是以(,)逗號分割的呢,
1;zhangsan
2;lisi
3;wangwu
4;zhaoliu
那麼應該使用命令 a = load '/user.data' using pigstorage(';');
圖:程式執行結果
圖:hbasestorage用來載入hbase中的資料資訊
概括幾個load操作的例子
(1) 不使用任何方式
a = load 'myfile.txt'
(2)使用載入函式
a = load 'myfile.txt' using pigstorage('\t');
(3)指定模式
a = load 'myfile.txt' as (f1:int, f2:int, f3:int);
(4)載入函式和模式均使用
/user2.data是乙個目錄結構;
store
它的作用就是將結果儲存到檔案系統中,store alias into 'directory' [using function];
這裡的"alias"是使用者要儲存的結果(關係)的名稱,into為不可省略的關鍵字,directory為使用者指定的儲存目錄的名字,需要用單引號括起來。
另外,如果此目錄已經存在,那麼store操作將會失敗,輸出的檔案將被系統命名為part-nnnnn的格式;
它的作用是基於資料的列進行資料轉換,alias = foreach
通常我們使用"foreach ... generate"組合來對資料列進行操作,
(1) 如果乙個關係a(outer bag),foreach語句可以按照下面的方式來使用:
x = foreach a generate f1;
(2) 如果a是乙個inner bag, foreach 語句可以按照下面的方式來使用
x = foreach b {
s = filter a by 'xyz';
generate count (s.$0);
使用$0和$1來制定佔位符,當沒有制定列的名稱時使用,
使用describe操作符來檢視指定名稱的模式;
以下是group的用法
對c的id列降序排列
pig入門案例
測試資料位於 home hadoop luogankun workspace sync data pig person.txt中的資料以逗號分隔 1,zhangsan,112 2,lisi,113 3,wangwu,114 4,zhaoliu,115 score.txt中的資料以製表符分隔 1202...
Pig入門 環境搭建
pig入門 環境搭建 本文介紹在linux redhat hadoop2.2.0 jdk1.7的環境下安裝pig 0.14.0.二 安裝及配置 1 解壓至安裝目錄 比如 tar zxvf pig 0.14.0.tar.gz c itcast 2 配置 編輯 bash profile檔案 新增 exp...
Pig效能優化
mapreduce job的很大一部分開銷在於磁碟io和資料的網路傳輸,如果能盡早的去除無用的資料,減少資料量,會提公升pig的效能。使用filter可以去除資料中無用的行 record 盡早的filter掉無用的資料,可以減少資料量,提公升pig效能。使用foreach generate可以去除資...