zoukankan      html  css  js  c++  java
  • 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模式

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

  • 相关阅读:
    python基础 2
    python基础 1
    进程
    进程作业
    上海python14期第二次阶段性考试
    面向对向之元类
    面向对向
    笔试题
    模块(2)
    模块作业
  • 原文地址:https://www.cnblogs.com/twodog/p/12136956.html
Copyright © 2011-2022 走看看