pig latin学习

1、pig -x local  /  pig -x mapreduce

2、sh 选项从Grunt shell中调用Linux shell的 ls 命令,fs选项调用HDFS的ls命令。

3、pig latin中语句是基本结构,语句使用关系,包括表达式模式。 只有在执行dump后,才执行将数据加载到文件系统的MapReduce作业。

4、pig latin基础类型 chararray : unicode中UTF-8格式     

ASCII占用一个字节(第一位为0,后续可表示128个字符);Unicode是符号集,比如‘严’的unicode是十六进制数4E25,占2个字节;

UTF-8特点是可变长的编码,1~4字节可根据需求变化 

5、

运算符 描述 示例
()

元组构造函数运算符 - 此运算符用于构建元组。

(Raju,30)
{}

包构造函数运算符 - 此运算符用于构造包。

{(Raju,30),(Mohammad,45)}
[]

映射构造函数运算符 - 此运算符用于构造一个映射。

[name#Raja,age#30]

6、要使用Apache Pig分析数据,我们必须首先将数据从HDFS加载到Apache Pig中。

7、

数据类型:基本类型,复杂类型。
基本类型:int,long,float,double,char array(string:注意以单引号),bytearray(byte[])
复杂类型:map,type,bag(可以任意嵌套)
 
map:key 是char array ;value 可以任意类型。
[’name’#’bob’,’age’#55]:创建一个包含 name 和 age 两个键的map。
tuple:是一个定长,无须相同类型。
(’bob’,55):创建一个包含两个字段的tuple 常量。
bag:是一个无序的tuple集合。无须加载到内存中的数据类型。
{(‘bob’,55),(’sally’,52),(‘john,25’)}:构造了一个包含的3个 tuple 的 bag,每个tuple 包含两个字段。
 
模式
一些常用的模式(数据以Json格式存储)已经放在HCatalog 中。
mdata = load ‘mydata’ using HCatLoader();
 
在加载数据时,没有告诉Pig 数据的模式,可以$0 表示第一列。
daily = load ’NYSE_daily’;
calcs = foreach daily generate $7 /1000 , $3 * 100.0 , SUBSTRING($0,0,1) , $6 - $3
注意:由于1000 是个整型,所以$7 会转换成整型。100.0 是个double,$3会自动转换成 double。$0 会推断为chararray。$3,$6 会推断为double ,因为这样更安全。
 
fltrd = filter daily by $6 > $3;
由于数值型,chararray 和 bytearray 都适合,所以pig 推断不出来,那么pig 都作为bytearray 处理,对这些字段内的数据进行一个字节一个字节的比较。
 
没有模式是具有感染性
divs = load ’NYSE_dividends’ as ( exchange,stock_symbol,date,dividends );
daily = load ’NYSE_daily’;
jnd = join divs by stock_symbol ,daily by $1;
这个例子中pig 并不知道 daily 的模式,所以他不知道在join 中divs 和 daily 的模式。
类型转换
与java语法一样,(int)值
unintended = foreach player generate (int)bat#’base_on_balls’ - (int)bat#’ibbs’;
所有类型都不允许转换为bytearray。转为复杂类型或者复杂类型转为其他类型目前也是不允许的。
可以从bytearray 转换为复杂类型。
daily = load ’NYSE_daily’ as (exchange:char array,symbol:chararray,volume:int,close:float )
rough = foreach daily generate volume * close;
pig 隐式转换时,会向范围更大的类型转。
int 和 long 一起会转long。int,long 和 float 一起会转 float。int、long、float 和double 一起会转double、

猜你喜欢

转载自www.cnblogs.com/li-ling/p/8920322.html
pig