此文章是vip文章,如何查看?  

1,点击链接获取密钥 http://nicethemes.cn/product/view29882.html

2,在下方输入文章查看密钥即可立即查看当前vip文章


pig学习笔记——运行与语法

  • 时间:
  • 浏览:
  • 来源:互联网

1.执行模式

local mode

在本地模式下,Pig运行在单个JVM中,访问本地系统,适用于处理小规模数据集

% pig -x local
grunt>

MapReduce mode


2.数据关系

关系(relation)、包(bag)、元组(tuple)、字段(field)、数据(data)的关系

  • 一个关系(relation)是一个包(bag),更具体地说,是一个外部的包(outer bag)。
  • 一个包(bag)是一个元组(tuple)的集合。在pig中表示数据时,用大括号{}括起来的东西表示一个包——无论是在教程中的实例演示,还是在pig交互模式下的输出,都遵循这样的约定,请牢记这一点,因为不理解的话就会对数据结构的掌握产生偏差。
  • 一个元组(tuple)是若干字段(field)的一个有序集(ordered set)。在pig中表示数据时,用小括号()括起来的东西表示一个元组。
  • 一个字段是一块数据(data)。

3.基本用法

实例一:计算多维度组合下的平均值的实际例子

数据

[root@localhost pig]$ cat a.txt 
a 1 2 3 4.2 9.8
a 3 0 5 3.5 2.1
b 7 9 9 - -
a 7 9 9 2.6 6.2
a 1 2 5 7.7 5.9
a 1 2 3 1.4 0.2
代码
A = LOAD 'a.txt' USING PigStorage (',') AS (col1:chararray, col2:int, col3:int, col4:int, col5:double, col6:double);
B = GROUP A BY (col2, col3, col4);
C = FOREACH B GENERATE group, AVG(A.col5), AVG(A.col6);
DUMP C;
结果

((1,2,3),2.8,5.0)
((1,2,5),7.7,5.9)
((3,0,5),3.5,2.1)
((7,9,9),2.6,6.2)

实例二:统计数据行数

数据

[root@localhost pig]$ cat a.txt 
a 1 2 3 4.2 9.8
a 3 0 5 3.5 2.1
b 7 9 9 - -
a 7 9 9 2.6 6.2
a 1 2 5 7.7 5.9
a 1 2 3 1.4 0.2
代码

A = LOAD 'a.txt' USING PigStorage (',') AS (col1:chararray, col2:int, col3:int, col4:int, col5:double, col6:double);
B = GROUP A ALL;
C = FOREACH B GENERATE COUNT(A.col2);
DUMP C;
结果

(6)

 

实例三:FLATTEN操作符

数据

[root@localhost pig]$ cat a.txt 
a 1 2 3 4.2 9.8
a 3 0 5 3.5 2.1
b 7 9 9 - -
a 7 9 9 2.6 6.2
a 1 2 5 7.7 5.9
a 1 2 3 1.4 0.2
代码

grunt> A = LOAD 'a.txt' USING PigStorage (',') AS (col1:chararray, col2:int, col3:int, col4:int, col5:double, col6:double);
grunt> B = GROUP A BY (col2, col3, col4);
grunt> C = FOREACH B GENERATE FLATTEN(group), AVG(A.col5), AVG(A.col6);
grunt> DUMP C;
结果
(1,2,3,2.8,5.0)
(1,2,5,7.7,5.9)
(3,0,5,3.5,2.1)
(7,9,9,2.6,6.2)
按照pig文档的说法,FLATTEN用于对元组(tuple)和包(bag)“解嵌套”(un-nest)


实例四:FILTER

数据

[root@localhost pig]$ cat a.txt 
a 1 2 3 4.2 9.8
a 3 0 5 3.5 2.1
b 7 9 9 - -
a 7 9 9 2.6 6.2
a 1 2 5 7.7 5.9
a 1 2 3 1.4 0.2
代码

grunt> A = LOAD 'a.txt' USING PigStorage (',') AS (col1:chararray, col2:int, col3:int, col4:int, col5:double, col6:double);
grunt> B = FILTER A BY col5 is not null;
grunt> dump B;

结果

(a,1,2,3,4.2,9.8)
(a,3,0,5,3.5,2.1)
(a,7,9,9,2.6,6.2)
(a,1,2,5,7.7,5.9)
(a,1,2,3,1.4,0.2)


实例五:JOIN

JOIN A BY $0,B BY $1...

实例六:FOREACH...GENERATE...

foreach B generate group,COUNT(A.$0);

实例七:ORDER...BY...

order A by $0,$1;

实例八:SUBSTRING

substring(chararray source,int start,int end): 提取source的子字符串,位置从start到end。输入字符串小于start会报错。





本文链接http://element-ui.cn/news/show-576994.aspx