# Pig 解釋器
原文鏈接 : [http://zeppelin.apache.org/docs/0.7.2/interpreter/pig.html](http://zeppelin.apache.org/docs/0.7.2/interpreter/pig.html)
譯文鏈接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10030871](http://www.apache.wiki/pages/viewpage.action?pageId=10030871)
貢獻者 : [片刻](/display/~jiangzhonglian) [ApacheCN](/display/~apachecn) [Apache中文網](/display/~apachechina)
## 概述
[Apache Pig](https://pig.apache.org/)是分析大型數據集的平臺,包括用于表達數據分析程序的高級語言,以及用于評估這些程序的基礎設施。Pig程序的顯著特點在于它們的結構適用于大量的并行化,從而使它們能夠處理非常大的數據集。
## 支持的解釋器類型?
* `%pig.script`(默認的Pig解釋器,所以你可以使用`%pig`)
`%pig.script`就像豬unt殼。您可以在Pig grunt shell中運行的任何操作都可以在解釋器中運行`%pig.script`,它用于運行Pig腳本,您不需要可視化數據,適合數據發送。
* `%pig.query`
`%pig.query`與之相比稍有不同`%pig.script`。它用于通過豬拉丁進行探索性數據分析,您可以利用齊柏林的可視化功能。還有就是在兩者之間的最后一條語句2個細微差別`%pig.script`和`%pig.query`
* 最后一句話中沒有豬別名`%pig.query`(見下面的例子)。
* 最后一個聲明必須單行?`%pig.query`
## 支持運行時模式
* 本地
* MapReduce的
* Tez_Local(僅支持Tez 0.7)
* Tez(僅支持Tez 0.7)
## 如何使用
### 如何設置Pig
* 本地模式
在本地模式下不需要做任何事情
* MapReduce模式
需要指定HADOOP_CONF_DIR?`ZEPPELIN_HOME/conf/zeppelin-env.sh`。
* Tez本地模式
tez本地模式不需要做任何事情
* Tez模式
需要指定HADOOP_CONF_DIR和TEZ_CONF_DIR?`ZEPPELIN_HOME/conf/zeppelin-env.sh`。
### 如何配置解釋器
在口譯員菜單中,您必須創建一個新的Pig解釋器。默認情況下,Pig解釋器具有以下屬性。您可以在這里設置任何Pig屬性,將其傳遞給Pig引擎。(如tez.queue.name&mapred.job.queue.name)。此外,我們使用段落標題作為作業名稱(如果存在),否則使用豬腳本的最后一行。所以你可以使用它來查找在YARN RM UI中運行的應用程序。
| 屬性 | 默認 | 描述 |
| --- | --- | --- |
| zeppelin.pig.execType | mapreduce | 豬運行時的執行模式。本地|?mapreduce |?tez_local |?TEZ |
| zeppelin.pig.includeJobStats | false | 是否顯示jobStats信息?`%pig.script` |
| zeppelin.pig.maxResult | 1000 | 最大行號顯示在?`%pig.query` |
| tez.queue.name | default | tez引擎的隊列名稱 |
| mapred.job.queue.name | default | mapreduce引擎的隊列名稱 |
### 案例
##### pig
```
%pig
bankText = load 'bank.csv' using PigStorage(';');
bank = foreach bankText generate $0 as age, $1 as job, $2 as marital, $3 as education, $5 as balance;
bank = filter bank by age != '"age"';
bank = foreach bank generate (int)age, REPLACE(job,'"','') as job, REPLACE(marital, '"', '') as marital, (int)(REPLACE(balance, '"', '')) as balance;
store bank into 'clean_bank.csv' using PigStorage(';'); -- this statement is optional, it just show you that most of time %pig.script is used for data munging before querying the data. ?
```
##### pig.query
獲取年齡小于30的每個年齡的數量
```
%pig.query
bank_data = filter bank by age < 30;
b = group bank_data by age;
foreach b generate group, COUNT($1); ?
```
與上述相同,但使用動態文本形式,以便使用可以在文本框中指定變量maxAge。(見下面的屏幕截圖)。動態形式是齊柏林很酷的功能,您可以參考此[鏈接](http://zeppelin.apache.org/docs/0.7.1/interpreter/(../manual/dynamicform.html))了解詳情。
```
%pig.query
bank_data = filter bank by age < ${maxAge=40};
b = group bank_data by age;
foreach b generate group, COUNT($1) as count; ?
```
獲取具體婚姻類型的每個年齡的數量,也在這里使用動態表單。用戶可以在下拉列表中選擇婚姻類型(見下面的屏幕截圖)。
```
%pig.query
bank_data = filter bank by marital=='${marital=single,single|divorced|married}';
b = group bank_data by age;
foreach b generate group, COUNT($1) as count; ?
```
以上示例在Zeppelin的Pig教程中,您可以查看詳細信息。這是截圖。

數據共享`%pig`和`%pig.query`,這樣就可以做一些常見的工作`%pig`,并以此為基礎進行的數據不同種類的查詢`%pig`。此外,我們建議您明確指定別名,以便可視化文件正確顯示列名稱。在上面的例子2和3中`%pig.query`,我們命名`COUNT($1)`為`count`。如果你不這樣做,那么我們將使用position來命名它。例如在上面的第一個例子中`%pig.query`,我們將用`col_1`圖表來表示`COUNT($1)`。
- 快速入門
- 什么是Apache Zeppelin?
- 安裝
- 配置
- 探索Apache Zeppelin UI
- 教程
- 動態表單
- 發表你的段落
- 自定義Zeppelin主頁
- 升級Zeppelin版本
- 從源碼編譯
- 使用Flink和Spark Clusters安裝Zeppelin教程
- 解釋器
- 概述
- 解釋器安裝
- 解釋器依賴管理
- 解釋器的模擬用戶
- 解釋員執行Hook(實驗)
- Alluxio 解釋器
- Beam 解釋器
- BigQuery 解釋器
- Cassandra CQL 解釋器
- Elasticsearch 解釋器
- Flink 解釋器
- Geode/Gemfire OQL 解釋器
- HBase Shell 解釋器
- HDFS文件系統 解釋器
- Hive 解釋器
- Ignite 解釋器
- JDBC通用 解釋器
- Kylin 解釋器
- Lens 解釋器
- Livy 解釋器
- Markdown 解釋器
- Pig 解釋器
- PostgreSQL, HAWQ 解釋器
- Python 2&3解釋器
- R 解釋器
- Scalding 解釋器
- Scio 解釋器
- Shell 解釋器
- Spark 解釋器
- 系統顯示
- 系統基本顯示
- 后端Angular API
- 前端Angular API
- 更多
- 筆記本存儲
- REST API
- 解釋器 API
- 筆記本 API
- 筆記本資源 API
- 配置 API
- 憑據 API
- Helium API
- Security ( 安全 )
- Shiro 授權
- 筆記本 授權
- 數據源 授權
- Helium 授權
- Advanced ( 高級 )
- Zeppelin on Vagrant VM ( Zeppelin 在 Vagrant 虛擬機上 )
- Zeppelin on Spark Cluster Mode( Spark 集群模式下的 Zeppelin )
- Zeppelin on CDH ( Zeppelin 在 CDH 上 )
- Contibute ( 貢獻 )
- Writing a New Interpreter ( 寫一個新的解釋器 )
- Writing a new Visualization (Experimental) ( 編寫新的可視化(實驗) )
- Writing a new Application (Experimental) ( 寫一個新的應用程序( 實驗 ) )
- Contributing to Apache Zeppelin ( Code ) ( 向 Apache Zeppelin 貢獻( 代碼 ) )
- Contributing to Apache Zeppelin ( Website ) ( 向 Apache Zeppelin 貢獻(website) )