Pig簡單入門

2021-06-29 00:23:05 字數 2312 閱讀 6288

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可以去除資...