[Hadoop]轉載-Pig的簡單介紹
Pig是Yahoo!捐獻給Apache的一個專案,目前還在Apache孵化器(incubator)階段,目前版本是v0.5.0。Pig是一個基於Hadoop的大規模資料分析平臺,它提供的SQL-like語言叫Pig Latin,該語言的編譯器會把類SQL的資料分析請求轉換為一系列經過優化處理的MapReduce運算。Pig為複雜的海量資料平行計算提供了一個簡易的操作和程式設計介面。本文介紹了Pig的安裝及簡單示例的執行,主要參考/翻譯自官方文件的Pig Setup 。
前提條件:
Linux/Unix系統,或帶有Cygwin的Windows作業系統,我是用的是Ubuntu 8.04;
Hadoop 0.20.X
JDK 1.6或更高
Ant 1.7(可選,如果想自己編譯Pig的話則需要)
JUnit 4.5(可選,如果自己想執行單元測試的話則需要)
Pig的安裝
1.下載Pig
可以去Pig的官方主頁下載最新的Pig,在寫本篇文章時,最新版本是Pig 0.5.0
2.解壓縮
$ tar -xvf pig-0.5.0.tar.gz
我一般喜歡把pig裝在/opt/hadoop/pig-0.5.0目錄下
3.設定環境變數
為了便於Pig以後的升級,我建立了一個軟連結,環境變數指向軟連結的目錄,而軟連結指向最新的Pig版本。
$ ln -s /opt/hadoop/pig-0.5.0 /opt/hadoop/pig
編輯/etc/enviroment,在PATH加入Pig的bin子目錄路徑(也可以修改~/.bashrc或~/.profile)。
4.驗證安裝完成
重新進入終端,鍵入env命令,應該能看到PATH已經生效。鍵入pig -help命令,則出現幫助資訊,代表Pig已經正確安裝完畢。
Pig的執行模式
1.本地模式
Pig執行於本地模式,只涉及到單獨的一臺計算機。
2.MapReduce模式
Pig執行於MapReduce模式,需要能訪問一個Hadoop叢集,並且需要裝上HDFS。
Pig的呼叫方式
Grunt shell方式:通過互動的方式,輸入命令執行任務;
Pig script方式:通過script指令碼的方式來執行任務;
嵌入式方式:嵌入java原始碼中,通過java呼叫來執行任務。
Pig的示例程式碼
下面就分別介紹這三種不同的呼叫方式,首先,先展示一下示例需要用到的原始碼,這部分原始碼與官方文件中的一樣,但有如下修改:
修正了官方文件中一個錯誤,即id.pig最後一行id.out兩側的全形單引號改為半形單引號;
2.修正了官方文件中一個錯誤,即idmapreduce.java的runIdQuery方法第一行末尾少一個分號;
3.按照Java常見的命名規範,類名首字母大寫。
script檔案:id.pig
local模式的java檔案:Idlocal.java
mapreduce模式的java檔案:Idmapreduce.java
兩個java類需要進行編譯,編譯命令:
javac -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idlocal.java
javac -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idmapreduce.java
其中pig-0.5.0-core.jar如不在當前目錄,則要指明其全路徑。
1.Grunt shell方式
Grunt shell方式首先用pig命令啟動,pig命令可以加引數“-x local”代表本地模式,或“-x mapreduce”代表mapreduce模式,預設mapreduce模式。
$ pig -x local
$ pig
$ pig -x mapreduce
按行輸入命令:
grunt> A = load 'passwd' using PigStorage(':');
grunt> B = foreach A generate $0 as id;
grunt> dump B;
grunt> store B into 'out';
其中,“dump B”表示在螢幕中顯示結果,“store B into 'out'”表示把結果輸出到out檔案/資料夾中。在local模式中,out檔案寫入到當前目錄;mapreduce中,out資料夾則需要給出絕對路徑。
2.Pig script方式
script方式中,用pig命令啟動,後面帶要執行的.pig檔案即可,如:
$ pig -x local id.pig
$ pig id.pig
$ pig -x mapreduce id.pig
3.嵌入式方式
嵌入式方式與執行於執行普通java類方式沒有任何不同,如:
java -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idmapreduce
java -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idlocal
文章出處:http://blog.csdn.net/inkfish/article/details/5205999
前提條件:
Linux/Unix系統,或帶有Cygwin的Windows作業系統,我是用的是Ubuntu 8.04;
Hadoop 0.20.X
JDK 1.6或更高
Ant 1.7(可選,如果想自己編譯Pig的話則需要)
JUnit 4.5(可選,如果自己想執行單元測試的話則需要)
Pig的安裝
1.下載Pig
可以去Pig的官方主頁下載最新的Pig,在寫本篇文章時,最新版本是Pig 0.5.0
2.解壓縮
$ tar -xvf pig-0.5.0.tar.gz
我一般喜歡把pig裝在/opt/hadoop/pig-0.5.0目錄下
3.設定環境變數
為了便於Pig以後的升級,我建立了一個軟連結,環境變數指向軟連結的目錄,而軟連結指向最新的Pig版本。
$ ln -s /opt/hadoop/pig-0.5.0 /opt/hadoop/pig
編輯/etc/enviroment,在PATH加入Pig的bin子目錄路徑(也可以修改~/.bashrc或~/.profile)。
4.驗證安裝完成
重新進入終端,鍵入env命令,應該能看到PATH已經生效。鍵入pig -help命令,則出現幫助資訊,代表Pig已經正確安裝完畢。
Pig的執行模式
1.本地模式
Pig執行於本地模式,只涉及到單獨的一臺計算機。
2.MapReduce模式
Pig執行於MapReduce模式,需要能訪問一個Hadoop叢集,並且需要裝上HDFS。
Pig的呼叫方式
Grunt shell方式:通過互動的方式,輸入命令執行任務;
Pig script方式:通過script指令碼的方式來執行任務;
嵌入式方式:嵌入java原始碼中,通過java呼叫來執行任務。
Pig的示例程式碼
下面就分別介紹這三種不同的呼叫方式,首先,先展示一下示例需要用到的原始碼,這部分原始碼與官方文件中的一樣,但有如下修改:
修正了官方文件中一個錯誤,即id.pig最後一行id.out兩側的全形單引號改為半形單引號;
2.修正了官方文件中一個錯誤,即idmapreduce.java的runIdQuery方法第一行末尾少一個分號;
3.按照Java常見的命名規範,類名首字母大寫。
script檔案:id.pig
view plaincopy
A = load 'passwd' using PigStorage(':');
B = foreach A generate $0 as id;
dump B;
store B into ‘id.out’;
local模式的java檔案:Idlocal.java
view plaincopy
import java.io.IOException;
import org.apache.pig.PigServer;
public class idlocal{
public static void main(String[] args) {
try {
PigServer pigServer = new PigServer("local");
runIdQuery(pigServer, "passwd");
}
catch(Exception e) {
}
}
public static void runIdQuery(PigServer pigServer, String inputFile) throws IOException {
pigServer.registerQuery("A = load '" + inputFile + "' using PigStorage(':');");
pigServer.registerQuery("B = foreach A generate $0 as id;");
pigServer.store("B", "id.out");
}
}
mapreduce模式的java檔案:Idmapreduce.java
view plaincopy
import java.io.IOException;
import org.apache.pig.PigServer;
public class idmapreduce{
public static void main(String[] args) {
try {
PigServer pigServer = new PigServer("mapreduce");
runIdQuery(pigServer, "passwd");
}
catch(Exception e) {
}
}
public static void runIdQuery(PigServer pigServer, String inputFile) throws IOException {
pigServer.registerQuery("A = load '" + inputFile + "' using PigStorage(':');");
pigServer.registerQuery("B = foreach A generate $0 as id;");
pigServer.store("B", "idout");
}
}
兩個java類需要進行編譯,編譯命令:
javac -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idlocal.java
javac -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idmapreduce.java
其中pig-0.5.0-core.jar如不在當前目錄,則要指明其全路徑。
1.Grunt shell方式
Grunt shell方式首先用pig命令啟動,pig命令可以加引數“-x local”代表本地模式,或“-x mapreduce”代表mapreduce模式,預設mapreduce模式。
$ pig -x local
$ pig
$ pig -x mapreduce
按行輸入命令:
grunt> A = load 'passwd' using PigStorage(':');
grunt> B = foreach A generate $0 as id;
grunt> dump B;
grunt> store B into 'out';
其中,“dump B”表示在螢幕中顯示結果,“store B into 'out'”表示把結果輸出到out檔案/資料夾中。在local模式中,out檔案寫入到當前目錄;mapreduce中,out資料夾則需要給出絕對路徑。
2.Pig script方式
script方式中,用pig命令啟動,後面帶要執行的.pig檔案即可,如:
$ pig -x local id.pig
$ pig id.pig
$ pig -x mapreduce id.pig
3.嵌入式方式
嵌入式方式與執行於執行普通java類方式沒有任何不同,如:
java -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idmapreduce
java -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idlocal
文章出處:http://blog.csdn.net/inkfish/article/details/5205999
相關文章
- [Hadoop]chukwa的簡單介紹Hadoop
- redis的簡單使用和介紹(轉載)Redis
- java字串的簡單介紹(轉)Java字串
- MSMQ的簡單介紹(收藏) (轉)MQ
- SqlDataAdapter簡單介紹 (轉)SQLLDAAPT
- Oracle 鎖簡單介紹(轉)Oracle
- Oracle鎖簡單介紹(轉)Oracle
- javascript方法過載簡單介紹JavaScript
- Teradata資料庫功能操作簡單介紹(轉載)資料庫
- Hadoop2.6.0子專案hadoop-mapreduce-examples的簡單介紹Hadoop
- (轉)簡單介紹java EnumerationJava
- Webpack 的簡單介紹Web
- Promise的簡單介紹Promise
- CFRunloopObserverRef 的簡單介紹OOPServer
- HADOOP的PIG框架Hadoop框架
- javascript圖片預載入簡單介紹JavaScript
- Oracle中的外連線簡單介紹(轉)Oracle
- SVG簡單介紹SVG
- HTML簡單介紹HTML
- ActiveMQ簡單介紹MQ
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- SCSS 簡單介紹CSS
- UICollectionView 簡單介紹UIView
- css簡單介紹CSS
- [Hadoop]轉載-avro資料序列化簡介HadoopVR
- SpringMvc的簡單介紹SpringMVC
- javascript的this用法簡單介紹JavaScript
- noscript的作用簡單介紹
- Redux的簡單概念介紹Redux
- ORACLE SEQUENCE的簡單介紹Oracle
- 動態載入js檔案簡單介紹JS
- jquery實現的圖片預載入簡單介紹jQuery
- RPC簡單介紹RPC
- spark簡單介紹(一)Spark
- Flutter key簡單介紹Flutter
- Python簡單介紹Python