1. 程式人生 > 其它 >大資料規整-12-pig處理大規模資料的高階查詢語言

大資料規整-12-pig處理大規模資料的高階查詢語言

技術標籤:大資料規整

1 簡介

用於描述資料流的語言,稱為Pig Latin。用於執行Pig Latin程式的執行環境,當前有兩個環境:單JVM中的本地執行環境和Hadoop叢集上的分散式執行環境。

Pig內部,每個操作或變換是對輸入進行資料處理,然後產生輸出結果,這些變換操作被轉換成一系列MapReduce作業,Pig讓程式設計師不需要知道這些轉換具體是如何進行的,這樣工程師可以將精力集中在資料上,而非執行的細節上。

2 下載安裝

安裝包下載地址:http://pig.apache.org/releases.html。
在這裡插入圖片描述
#tar -xzvf pig-0.17.0.tar.gz -C /usr/local/

#cd /usr/local/
#mv pig-0.17.0/ pig
#vi /root/.bashrc

export PIG_HOME=/usr/local/pig
export PATH=$PATH:$PIG_HOME/bin

#source /root/.bashrc
#pig -help
#pig -version【0.17.0】
#hadoop version【2.8.5】
#pig -x local設定執行模式
grunt>
grunt> quit退出

3 執行型別

3.1 local模式

Grunt是Pig的外殼程式(shell)。本地模式下,Pig執行在單個JVM中,訪問本地檔案系統,該模式用於測試或處理小規模資料集。

#pig -x local
grunt>
grunt> quit
例如,把linux下的/etc/passwd檔案的第一列提取出來輸出。
#head -n 5 /etc/passwd

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

#pig -x local -brief

Connecting to hadoop file
system at: file:/// [表示本地檔案系統]

使用

grunt> A = load '/etc/passwd' using PigStorage(':');注意空格不可少
grunt> B = foreach A generate $0 as id;注意空格不可少
grunt> dump B;注意空格不可少

3.2 MapReduce模式

在沒有安裝hadoop的情況下執行這個指令,會報錯。
ERROR 4010: Cannot find hadoop configurations in classpath (neither hadoop-site.xml nor core-site.xml was found in the classpath). If you plan to use local mode, please put -x local option in command line。
Pig根據HADOOP_HOME環境變數來尋找並執行對應的Hadoop客戶端。
#cat /root/.bashrc

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export HADOOP_CLASSPATH=/usr/local/hadoop/share/hadoop/common/lib

#pig -brief

Connecting to hadoop file system at: hdfs://pda1:9000

(1)啟動hadoop叢集
#start-dfs.sh
#start-yarn.sh
#mr-jobhistory-daemon.sh start historyserver注意一定要執行此行
(2)檔案上傳到叢集中
#hdfs dfs -ls /
#hdfs dfs -put /etc/passwd /
(3)進入Pig shell,執行,以’:‘分隔提取A,把A的第一列放入B,dump打出B。
#pig -x mapreduce -brief
grunt> A = load ‘/passwd’ using PigStorage(’:’);
grunt> B = foreach A generate $0 as id;
grunt> dump B;
(4)關閉叢集
#mr-jobhistory-daemon.sh stop historyserver
#stop-yarn.sh
#stop-dfs.sh