[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
相關文章
- Webpack 的簡單介紹Web
- AOP的簡單介紹
- form表單的簡單介紹ORM
- Flownet 介紹 及光流的簡單介紹
- RPC簡單介紹RPC
- Python簡單介紹Python
- KVM簡單介紹
- RMI簡單介紹
- HTML簡單介紹HTML
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- ajax簡單介紹
- SVG簡單介紹SVG
- Clickjacking簡單介紹
- 【Pandas】簡單介紹
- Map簡單介紹
- JSON簡單介紹JSON
- ActiveMQ簡單介紹MQ
- 函子的簡單介紹
- [轉]Oracle資料庫ASH和AWR的簡單介紹Oracle資料庫
- Hadoop Hive介紹HadoopHive
- Hadoop Sqoop介紹Hadoop
- 簡單介紹四種Python 列表反轉顯示的方法Python
- Git_簡單介紹Git
- jQuery Validate簡單介紹jQuery
- JSON物件簡單介紹JSON物件
- <svg>元素簡單介紹SVG
- 簡單介紹 ldd 命令
- 禪道簡單介紹
- Apache Curator簡單介紹Apache
- spark簡單介紹(一)Spark
- Flutter key簡單介紹Flutter
- 簡單介紹克隆 JavaScriptJavaScript
- Ansible(1)- 簡單介紹
- java註解的簡單介紹Java
- Caffeine快取的簡單介紹快取
- 簡單介紹Rust中的workspaceRust
- Hadoop 簡介Hadoop