Looking for apache-pig Answers? Try Ask4KnowledgeBase
Looking for apache-pig Keywords? Try Ask4Keywords

apache-pig開始使用apache-pig


備註

本節概述了apache-pig是什麼,以及開發人員為什麼要使用它。

它還應該提到apache-pig中的任何大型主題,並鏈接到相關主題。由於apache-pig的文檔是新的,您可能需要創建這些相關主題的初始版本。

安裝或設置

Linux的

要求(r0.16.0)

強制性

根據目前的Apache-Pig 文檔,它僅支持UnixWindows 操作系統。

  • Hadoop 0.23.X,1.X或2.X
  • 安裝Java 1.6或更高版本並將JAVA_HOME環境變量設置為Java安裝目錄

可選的

  • Python 2.7或更高版本(Python UDF)
  • Ant 1.8(用於構建)

下載最新的Pig版本

http://pig.apache.org/releases.html#Download下載最新版本的pig

安裝

mkdir Pig
cd Downloads/ 
tar zxvf pig-(latest-version).tar.gz 
tar zxvf pig-(latest-version).tar.gz 
mv pig-(latest-version).tar.gz/* /home/Pig/
 

組態

安裝Apache Pig後,我們必須對其進行配置。

打開.bashrc文件

vim ~/.bashrc
 

在.bashrc文件中,設置以下變量 -

export PIG_HOME = /home/Pig
export PATH  = PATH:/home/Pig/bin
 

保存文件並使用在環境中重新加載bashrc

. ~/.bashrc
 

驗證豬版

pig –version 
 

如果安裝成功,則上面的命令顯示已安裝的Pig版本號。

測試豬安裝

pig -h
 

這應顯示與pig相關的所有可能命令

您的豬現在已在本地安裝,您可以使用本地參數來運行它

pig -x local
 

連接到Hadoop

如果在群集上安裝了Hadoop1.x或2.x,則會設置HADOOP_HOME環境變量。

你可以像以前一樣在.bashrc中添加一行,將pig連接到Hadoop

export PIG_CLASSPATH = $HADOOP_HOME/conf
 

跑豬

執行模式

您可以使用pig (bin / pig)命令或運行jar 文件(java -cp pig.jar)來運行Pig

PIG 腳本可以在3種不同的模式下執行:

  • 本地模式

     pig -x local ...
     
  • Mapreduce模式 (默認模式)

     pig -x mapreduce ...
          (or)
     pig ...
     
  • Tez本地模式

     pig -x tez ...
     

互動模式

Pig可以使用Grunt shell以交互模式運行。可以在此shell中以交互方式輸入Pig Latin語句和命令。

$ pig -x <mode> <enter>
grunt>
 

Mode 可以是執行模式之一,如上一節中所述。

批處理模式

Pig也可以批處理模式執行。這裡提供了一個包含pig語句和命令列表的.pig 文件。

$ pig -x <mode> <script.pig>
grunt>
 

類似地, Mode 可以是執行模式之一,如上一節中所述。

什麼是豬?

Pig提供了一個在Hadoop上並行執行數據流的引擎。它包括一種用於表達這些數據流的語言Pig Latin。 Pig Latin包含許多傳統數據操作(連接,排序,過濾等)的運算符,以及用戶開發自己的讀取,處理和寫入數據的功能。 Pig是一個Apache開源項目。這意味著用戶可以自由下載它作為源或二進製文件,自己使用它,為它做貢獻,並根據Apache許可條款 - 在產品中使用它並根據需要進行更改。

Pig中的字數統計示例

輸入文件

Mary had a little lamb
its fleece was white as snow
and everywhere that Mary went
the lamb was sure to go.
 

豬字數統計代碼

-- Load input from the file named Mary, and call the single
-- field in the record 'line'.
input = load 'mary' as (line);

-- TOKENIZE splits the line into a field for each word.
-- flatten will take the collection of records returned by
-- TOKENIZE and produce a separate record for each one, calling the single
-- field in the record word.
words = foreach input generate flatten(TOKENIZE(line)) as word;

-- Now group them together by each word.
grpd = group words by word;

-- Count them.
cntd = foreach grpd generate group, COUNT(words);

-- Print out the results.
dump cntd;
 

產量

Mary,2
had,1
a,1
little,1
lamb,2
its,1
fleece,1
was,2
white,1
as,1
snow,1
and,1
everywhere,1
that,1
went,1
the,1
sure,1
to,1
go,1