Pig设计模式概要以及与SQL的设计模式的对比


1概要模式

概要模式其实就是数据的全貌信息的获取,主要分为3种:

1.1数值概要

#HSQL
SELECT MIN(num),MAX(num),COUNT(num) FROM table GROUP BY groupcol;
#Pig
b = GROUP a BY groupcol;
c = FOREACH b GENERATE group, MIN(a.num), MAX(a.num), COUNT_STAR(a)

1.2倒排索引概要

1.3计数器概要

2过滤器模式

过滤模式是不改变原有记录,而寻求子集的设计模式,主要应用于如下方面:

2.1过滤

#HSQL
SELECT * FROM table WHERE value<3;
#Pig
b = FILTER a BY value <3;

2.2布隆过滤

2.3TopN模式

#HSQL
SELECT * FROM table ORDER BY col DESC LIMIT 10;
#Pig
b = ORDER a BY col DESC;
c = LIMIT b 10;

2.4去重

#HSQL
SELECT DISTINCT * FROM table;
#Pig
b = DISTINCT a;

3数据组织模式

数据组织模式是将一组数据进行重组,重点在于将个别记录的价值放大到全局,主要有如下几个设计模式:

3.1分层

#HSQL
  ##在关系数据库中,很少;在RDBMS中解决类似问题方法一般是先对数据进行连接,然后在结果上分析
#Pig
  ##pig对于分层数据结构有一定支持,包括层次化的包和元组。
a = LOAD '/data/a' AS PigStorage('|');
b = LOAD '/data/b' AS PigStorage(',');
group_c = COGROUP a BY $2, b BY $1;
annalyzed = FOREACH group_c GENERATE udfs.ananlyze(group ,$1 ,$2);
...

3.2分区

3.3分箱

3.4全排序

#HSQL
SELECT * FROM table ORDER BY col DESC;
#Pig
b = ORDER a BY col DESC;

3.5混排

#HSQL
SELECT * FROM table ORDER BY RAND();
#Pig
b = GROUP a BY RANDOM(); #随机
c = FOREACH b GENERATE FLATTEN(a);#分组打平

4连接模式

连接模式是对于多处数据进行组织的一种方法,主要有以下几种:

4.1终端连接

#HSQL
SELECT column_name 
FROM table_name1
LEFT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name
#Pig
C = JOIN A BY a1 LEFT OUTER,B BY b1; #左外,也可以:{左右全}外
C = JOIN A BY a1,B BY b1; #内

4.2复制连接

#pig
#只有内连接和左外才支持这种复制链接优化模式
#除了第一个数据集以外,要求所有的数据集都要在内存中
big = LOAD 'big_data' AS (b1,b2,b3);
tiny = LOAD 'tiny_data' AS (t1,t2,t3);
mini = LOAD 'mini_data' AS (m1,m2,m3);
C = JOIN big BY b1, tiny BY t1, mini BY m1 USING 'replicated';

4.3组织连接

4.4笛卡尔

#HSQL
SELECT * FROM table a ,b;
#Pig
c = CROSS a , b ;

5模式的模式

5.1作业链

5.2折叠链

5.3归并链

6IO模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值