14.3.2 Pig Latin的使用
这一节我们着重讲一下Pig Latin可以用在哪些方面。
1.运行Pig Latin
用户可以通过多种方式使用Pig Latin语句,如14.2.3所述。通常,Pig按如下方式执行Pig Latin语句:
1)Pig对所有语句的语法和语义进行确认;
2)如果遇到DUMP或者STORE命令,Pig将顺序执行上面所有的语句。
在下面的示例中,Pig将只确认LOAD和FOREACH语句,但不执行:
A=LOAD'Student'USING PigStorage(':')AS(Sno:chararray, Sname:chararray, Ssex:
chararray, Sage:int, Sdept:chararray);
B=FOREACH A GENERATE Sname;
在下面的示例中,Pig将确认并执行LOAD、FOREACH和DUMP语句:
A=LOAD'Student'USING PigStorage(':')AS(Sno:chararray, Sname:chararray, Ssex:c
hararray, Sage:int, Sdept:chararray);
B=FOREACH A GENERATE Sname;
DUMP B;
因为Pig的一些命令并不会自动执行,而是需要通过其他命令来触发,也就是说如果用户连续地使用某些命令,它并不会马上执行,而是在最后的一个触发操作的调用下,连续地一次性地执行完毕。
2.查看Pig Latin的运行结果
Pig Latin包括一些用来查看语句运行结果的操作。
1)使用DUMP操作把操作的结果显示在屏幕上,如下所示:
DUMP alias;
2)使用STORE操作把操作的结果存储在文件中,如下所示:
STORE alias INTO'directory'[USING function];
3.Pig Latin的调试
Pig Latin包括一些可以帮助用户进行调试的操作。
1)使用DECSRIBE操作查看关系的模式,如下所示:
DESCRIBE alias;
2)使用EXPLAIN操作查看对某个关系进行操作的逻辑的、物理的或者MapReduce的执行计划,如下所示:
EXPLAIN[-script pigscript][-out path][-brief][-dot][-param param_name=
param_value][-param_file file_name]alias;
3)使用ILLUSTRATE操作对Pig Latin语句进行单步执行,如下所示:
ILLUSTRATE alias;
4.注释在Pig Latin脚本中的使用
注释就是对代码的解释和说明。目的是为了让别人和自己很容易看懂。像其他的编程语言一样,Pig Latin脚本中也可以包含注释,下面是两种常用的注释格式:
(1)多行注释:/……/
示例:
/*
myscript.pig
My script includes three simple Pig Latin Statements.
*/
(2)单行注释:—
示例:
A=LOAD'Student'USING PigStorage(':');—语句
B=FOREACH A GENERATE Sname;—foreach语句
DUMP B;—dump语句
5.大小写相关性
在Pig Latin中,关系名、域名、函数名是区分大小写的。参数名和所有Pig Latin关键字是不区分大小写的。
请注意下面的示例:
关系名A、B、C等是区分大小写的;
域名f1,f2、f3等是区分大小写的;
函数名PigStorage、COUNT等是区分大小写的;
关键字LOAD, USING, AS, GROUP, BY, FOREACH, GENERATE, DUMP等是不区分大小写的,它们也能被写成load、using、as、group、by、foreach、generate、dump等。在FOREACH语句中,关系B中的域通过位置来访问,如下所示:
grunt>A=LOAD'data'USING PigStorage()AS(f1:int, f2:int, f3:int);
grunt>B=GROUP A BY f1;
grunt>C=FOREACH B GENERATE COUNT($0);
grunt>DUMP C;