pig基础知识总结

本文详细介绍了Pig Latin的基础知识,包括GROUP操作、JOIN内外连接、Pig函数使用和正则表达式。讲解了如何注册和定义UDF,以及如何处理数据模式和异常值。还探讨了Pig的内连接实现、数据分组和过滤,以及如何使用Pig的计算和过滤函数。
摘要由CSDN通过智能技术生成

Pig Latin UDF语句

REGISTER   在Pig运行时环境中注册一个JAR文件

DEFINE      为UDF、流式脚本或命令规范新建别名

 

Pig Latin命令类型

kill    中止某个MapReduce任务

exec 在一个新的Grunt shell程序中以批处理模式运行一个脚本

run   在当前Grunt外壳程序中运行程序

quit  退出解释器

set   设置Pig选项

 

模式(Schema

Pig的一个关系可以有一个关联的模式,模式为关系的字段指定名称和类型。Pig的这种模式声明方式和SQL数据库要求数据加载前必须先声明模式截然不同,Pig设计的目的是用于分析不包含数据类型信息的纯文本输入文件的。但是尽量定义模式,会让程序运行地更高效。

缺点:在查询中声明模式的方式是灵活的,但不利于模式重用。每个查询中维护重复出现的模式会很困难。处理这一问题的办法是写自己的加载函数来封装模式。

SQL数据库在加载数据时,会强制检查表模式中的约束。在pig中,如果一个值无法被强制转换为模式中申明的类型,pig会用空值null代替,显示一个空位。大数据集普遍都有被损坏的值、无效值或意料之外的值,简单的方法是过滤掉无效值:

grunt>good_records = filter recordsby temperature is not null;

另一种技巧是使用SPLIT操作把数据划分成好和坏两个关系,然后在分别进行分析:

grunt> split records intogood_records if temperature is not null,

                                   bad_records if temperature isnull;

grunt> dump good_records;

在Pig中,不用为数据流中的每个新产生的关系声明模式。大多数情况下,Pig能够根据关系操作的输入关系的模式来确定输出结果的模式。有些操作不改变模式,如Limit。而Union会自动生成新的模式。

 

重新定义一个关系的模式用带as子句的FOREACH…GENERATE操作来定义输入关系的一部分或全部字段的模式

 

Pig的函数分为计算函数,过滤函数,加载函数和存储函数。

计算函数: AVG, COUNT, CONCAT, COUNTSTAR,DIFF, MAX, MIN, SIZE, SUM, TOKENIZE

过滤函数:IsEmpty

加载/存储函数:PigStorage,BinStorage, BinaryStorage, TextLoader, PigDump

 

内连接的实现:

COGROUP,inner和flatten组合使用相当于实现了内连接:

G = COGROUP A by $0 innner, B by $1inner;

H = foreach G generate flatten($1),flatten($2)

// H和join A by $0, B by $1相同

 

 

 

foreach…generate…
用于重新生成模式中的数据名和数据类型。默认保持原有名字,但是如果存在表达式,则无数据名,只有数据类型;而两个不兼容类型计算后,生成数据类型unknown,必须在generate 变量后使用as关键词定义别名;

      

 

#用于map查找;

.用于tuple(元组)投影;

+对于bag不适用;

下面的语句将执行不了

A= load 'foo'as (x:chararray, y:int, z:int);

B = group A by x; -- produces bag Acontaining all the records for a giv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值