# 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教程中,您可以查看详细信息。这是截图。
![](https://img.kancloud.cn/45/1c/451c7b4dd0cde75c68ed98bc4d0dcd71_566x244.jpg)
数据共享`%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) )