Hadoop系列三:Hadoop之Pig篇
Pig安裝和運行
Pig包括兩部分:
—用于描述數據流的語言,稱為Pig Latin。
—用于執行PigLatin程序的執行環境,當前有兩個環境:單JVM中的本地執行環境和Hadoop集群上的分布式執行環境。
?Pig內部,每個操作或變換是對輸入進行數據處理,然后產生輸出結果,這些變換操作被轉換成一系列MapReduce作業,Pig讓程序員不需要知道這些轉換具體是如何進行的,這樣工程師可以將精力集中在數據上,而非執行的細節上。
1)下載解壓
單節點Ubuntu,主機名hp,已部署Hadoop單節點偽分布。
官網http://pig.apache.org/下載pig-0.15.0.tar.gz解壓/home/hp下。
2)環境配置
$sudo gedit/etc/profile
添加如下:
#Hadoop
exportHADOOP_HOME=/home/hp/hadoop
export PIG_HOME=/home/hp/pig
export PIG_CLASSPATH=${HADOOP_HOME}/conf?? --mapreduce模式才需要配置
exportPATH=$PATH:${HADOOP_HOME}/bin:${PIG_HOME}/bin
3)本地模式:
Grunt是Pig的外殼程序(shell)。本地模式下,Pig運行在單個JVM中,訪問本地文件系統,該模式用于測試或處理小規模數據集。
$pig –Xlocal
4)Mapreduce模式:
在MapReduce模式下,Pig將查詢翻譯為MapReduce作業,然后在Hadoop集群上執行。
$pig 進入gruntshell?
grunt>help查看命令幫助
grunt>quit退出
grunt>shjps 執行操作系統命令jps
5)測試
運行示例:把Ubuntu下的/etc/passwd文件的第一列提取出來輸出,用MapReduce模式跑。
?? 啟動Hadoop集群,$sbin/start-dfs.sh和$sbin/start-yarn.sh,使用jps查看進程。
?? 首先把/etc/passwd文件put到hadoop的hdfs的input下:
$hadoopfs -put /etc/passwd /input
查看是否已上傳到input目錄下$hadoop fs –ls /input
?? 進入Pigshell,運行命令,以':'分隔提取A,然后把A的第一列放入B,dump打出B:
$pig
grunt>A = load '/input/passwd' using PigStorage(':'); //注意等號兩邊要有空格,注意passwd路徑
grunt>B = foreach A generate $0 as id;???????
grunt>dump B;
?????? 總結:主要在和hadoop結合配置上,grunt命令需要深入學習。Pig并不適合所有的數據處理任務,和MapReduce一樣,它是為數據批處理而設計的,如果想執行的查詢只涉及一個大型數據集的一小部分數據,Pig的實現不會很好,因為它要掃描整個數據集或其中很大一部分。
執行Pig程序的方法:
l?? 腳本:Pig可以運行包含Pig命令的腳本文件,例如,pig script.pig,對于很短的腳本可以通過使用-e選項直接在命令行中輸入腳本字符串。
l?? Grunt:Pigshell,就是上文的運行模式
l ?嵌入式方法:也可以在Java中運行Pig程序,和使用JDBC運行SQL程序類似。Pig其實是對Java的Mapreduce的封裝,進一步的抽象,運行的也是java程序,并在此基礎上提供其他特性。總結
以上是生活随笔為你收集整理的Hadoop系列三:Hadoop之Pig篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop系列二:Hadoop单节点伪
- 下一篇: Hadoop系列四:Hadoop之Hiv