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模式

转载于:https://my.oschina.net/u/3511143/blog/1808961

Pig设计模式概要以及与SQL的设计模式的对比的更多相关文章

  1. java设计模式系列之设计模式概要(1)

    一.什么是设计模式 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. ...

  2. 初探Java设计模式4:JDK中的设计模式

    JDK中设计模式 本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图.首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助.一.设计模式是什么(1)反复出现 ...

  3. [Head First设计模式]饺子馆(冬至)中的设计模式——工厂模式

    系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...

  4. 设计模式总结(《Head First设计模式》学习总结)

    写在前面: 学习过程中不仅要熟练掌握技能,理论的消化吸收也必不可少.虽然个人更倾向于学习技术类的东西(短时间的精力投入很快就能看到成效...),但看了很多前辈的经验总结后才知道理论性的东西是绝对不能忽 ...

  5. php设计模式课程---1、什么是设计模式

    php设计模式课程---1.什么是设计模式 一.总结 一句话总结:经典场景的经典解决方法. 经典场景的经典解决方法 1.设计模式使用的通俗场景有哪些? 比如:拍电影时,常用设计模式 感情狗血剧:误会模 ...

  6. Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?

    什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的. 如果重 ...

  7. LINQ to SQL和Entity Framework对比与关联 (转载)

    LINQ to SQL和Entity Framework对比与关联       LINQ to SQL和Entity Framework都是一种包含LINQ功能的对象关系映射技术.他们之间的本质区别在 ...

  8. 设计模式概要 & 六原则一法则

    参考文章 http://blog.csdn.net/sinat_26342009/article/details/46419873 继承vs组合:http://www.cnblogs.com/feic ...

  9. PHP常用设计模式,PHP常用设计模式详解,PHP详解设计模式,PHP设计模式

    PHP常用设计模式详解 单例模式: php交流群:159789818 特性:单例类只能有一个实例 类内__construct构造函数私有化,防止new实例 类内__clone私有化,防止复制对象 设置 ...

随机推荐

  1. flask-宏

    flask-宏 模板中的宏跟python中的函数类似,可以传递参数,但是不能有返回值,可以将一些经常用到的代码片段放到宏中,然后把一些不固定的值抽取出来当成一个变量,使用宏的时候,参数可以为默认值. ...

  2. go中的面向对象总结

    我们总结一下前面看到的:Go 没有类,而是松耦合的类型.方法对接口的实现. OO 语言最重要的三个方面分别是:封装,继承和多态,在 Go 中它们是怎样表现的呢? 封装(数据隐藏):和别的 OO 语言有 ...

  3. python3(三十六)StringIO BytesIO

    """ StringIO和BytesIO """ __author__on__ = 'shaozhiqi 2019/9/23' # !/us ...

  4. 通过Powershell检查SMTP地址是否被检测网站列入黑名单

    通常,我们可能因为某些用户发送了一些非常规邮件,邮件出口地址被一些权威网站列入黑名单,导致大量业务邮件无法正常发送.这时候,我们可以通过powershell写一些关于IP地址检测的脚本,并列入计划任务 ...

  5. floyd最小环&&模板

    floyd的核心代码: ;k<=n;k++){ ;i<=n;i++){ ;j<=n;j++){ dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j] ...

  6. Progress笔记

    1. iconv -f gbk -t unicode test.tmp > test.csv 如果出现文件数据补全,需要确认在这之前,output是否已经close,如果output to指定了 ...

  7. 控件:DataGridView列类型

    DataGridView的列的类型提供有多种,包括有: (1)DataGridViewTextBoxColumn(文本列,默认的情况下就是这种) (2)DataGridViewComboBoxColu ...

  8. Daily Scrum 1/7/2015

    Process: Zhaoyang: Do some code intergration and test the total feature in the IOS APP. Yandong: Cod ...

  9. Video tagging systems based on DNNs

    Need: With the ever-growth large-scale video in the mobile phone, so what will everyone get from the ...

  10. Joomla 3.4.6 Remote Code Execution漏洞复现

    0x00:简介 Joomla是一套全球有名的CMS系统. Joomla基于PHP语言加上MySQL数据库所开发出来的WEB软件系统,目前最新版本是3.9.12. Joomla可以在多种不同的平台上部署 ...