Pig 初识

Pig 用于描述数据流的脚本语言,叫 Pig Latin。

如果只涉及一个大型数据集中的一小部分数据,Pig不会表现很好,因为它要扫描整个数据集或其中的很大一部分。


Pig有两种执行模式

1.本地模式

本地模式下,Pig运行在单个JVM中,访问本地文件系统。该模式只适用处理小规模数据集或使用Pig。

本地模式运行,需把选项设置为local

bin/pig -x local

2.MapReduce模式

此模式下,Pig将查询翻译为MapReduce作业,然后在Hadoop上运行。

bin/pig -x mapreduce    // 不使用-x ,默认即为mapreduce模式。

pig 使用-e选项直接在命令行以字符串形式输入脚本.


Pig有三种数据格式

字段  比如 int 或者 chararray。

元组  字段的有序集。使用()。比如(int,int,chararray)和(chararray,int,int)是不同的元组。

包      元组的无序集。 一些元组的集合。使用 {  } 。

关系  类似于包。



ok,现在开始第一个“hello_world”

给出数据(年份,气温,质量),求出每年的最高气温。



ok,接下来是代码。

records = LOAD 'sample' AS (year:int,temperature:int,a:int);
//  从默认路径 /user/hadoop读取sample,解析为三个int类型,并分别命名。
filtered_records = FILTER records BY temperature !=9999;
//  过滤records,temperature!=9999,才可以。
group_records = GROUP filtered_records BY year;
//  把相同year的元组合成一个包,然后和系统自建的group变量组成新元组。 
//  group_records的结构  {group: int,filtered_records: { ( year:int , temperature:int , a:int ) } }
max_temp = FOREACH group_records GENERATE group,MAX(filtered_records.temperature);
// FOREACH 对每一行处理, GENERATE 定义导出字段。 这里输出group和 每个filtered_records中temperature的最大值。
DUMP max_temp;
// 查看 max_temp 的内容。


输出的max_temp结果



DESCRIBE group_records ;  // 描述此变量的格式



ILLUSTRATE  max_temp;  // 描述max_temp的数据流








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值