Pig模式

Pig中的模式可以是用户显示声明的,也可以是Pig通过用户的使用方式猜测的。

Pig对模式的认知在Pig Latin脚本执行的不同阶段可能是不同的。
 
 
下面的语句,用户显示声明了模式:3个字段,分别是name、age、address,它们的类型也确定了。
 data = load 'data' as (name:chararray, age:int, address:chararray);
 
 
下面的语句,用户通过自定义的加载模式声明了模式
data = load 'data' as XxStorage();
 
 
在加载数据的时候没有声明模式,Pig会将它们作为bytearray类型,然后Pig会根据用户对数据的使用方式进行猜测:
$7/1000猜测出$7字段是int类型
$3*100.0猜测出$3字段是double类型
SUBSTRING($0, 0, 1)猜测出$0是chararray类型
$6-$3猜测出$6、$3是数值类型,但为了安全起见,Pig将它们猜测成double类型
 data = load 'data';
frhd = foreach data generate $7/1000, $3*100.0, SUBSTRING($0, 0, 1), $6-$3
 
 
Pig通过$0 > $3猜测不出它们是什么类型(可以是chararray,也可以是数值类型),就将它们作为bytearray类型。
cleaned = filter data by $0 > $3
 
 
原文地址:https://www.cnblogs.com/lishouguang/p/4559267.html