`
lt200819
  • 浏览: 187529 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

各种SQL在PIG中实现

    博客分类:
  • Pig
 
阅读更多

 

本博客属原创文章,转载请注明出处:http://guoyunsky.iteye.com/blog/1317084   

 

    我这里以Mysql 5.1.x为例,Pig的版本是0.8

    同时我将数据放在了两个文件,存放在/tmp/data_file_1和/tmp/data_file_2中.文件内容如下:

    tmp_file_1:

Txt代码  收藏代码
  1. zhangsan    23  1  
  2. lisi    24  1  
  3. wangmazi    30  1  
  4. meinv   18  0  
  5. dama    55  0  

   tmp_file_2:

Txt代码  收藏代码
  1. 1   a  
  2. 23  bb  
  3. 50  ccc  
  4. 30  dddd  
  5. 66  eeeee  

 

       1.从文件导入数据

          1)Mysql (Mysql需要先创建表).

             CREATE TABLE TMP_TABLE(USER VARCHAR(32),AGE INT,IS_MALE BOOLEAN);

             CREATE TABLE TMP_TABLE_2(AGE INT,OPTIONS VARCHAR(50));   -- 用于Join

             LOAD DATA LOCAL INFILE '/tmp/data_file_1'  INTO TABLE TMP_TABLE ;

             LOAD DATA LOCAL INFILE '/tmp/data_file_2'  INTO TABLE TMP_TABLE_2;

          2)Pig

              tmp_table = LOAD '/tmp/data_file_1' USING PigStorage('\t') AS (user:chararray, age:int,is_male:int);

              tmp_table_2= LOAD '/tmp/data_file_2' USING PigStorage('\t') AS (age:int,options:chararray);

 

      2.查询整张表

         1)Mysql

            SELECT * FROM TMP_TABLE;

         2)Pig

            DUMP tmp_table;

      3. 查询前50行

         1)Mysql

            SELECT * FROM TMP_TABLE LIMIT 50;

         2)Pig

             tmp_table_limit = LIMIT tmp_table 50;

             DUMP tmp_table_limit; 

     4.查询某些列

        1)Mysql

            SELECT USER FROM TMP_TABLE;

        2)Pig

            tmp_table_user = FOREACH tmp_table GENERATE user;

            DUMP tmp_table_user;

 

    5. 给列取别名

        1)Mysql

           SELECT USER AS USER_NAME,AGE AS USER_AGE FROM TMP_TABLE;

        2)Pig

           tmp_table_column_alias = FOREACH tmp_table GENERATE user AS user_name,age AS user_age;

           DUMP tmp_table_column_alias; 

 

     6.排序

        1)Mysql

           SELECT * FROM TMP_TABLE ORDER BY AGE;

        2)Pig

            tmp_table_order = ORDER tmp_table BY age ASC;

            DUMP tmp_table_order;

 

     7.条件查询

        1)Mysql

            SELECT * FROM TMP_TABLE WHERE AGE>20;

        2) Pig

            tmp_table_where = FILTER tmp_table by age > 20;

            DUMP tmp_table_where;

 

     8.内连接Inner Join

        1)Mysql

           SELECT * FROM TMP_TABLE A JOIN TMP_TABLE_2 B ON A.AGE=B.AGE;

        2)Pig

            tmp_table_inner_join = JOIN tmp_table BY age,tmp_table_2 BY age;

            DUMP tmp_table_inner_join;

    9.左连接Left  Join

       1)Mysql

           SELECT * FROM TMP_TABLE A LEFT JOIN TMP_TABLE_2 B ON A.AGE=B.AGE;

       2)Pig

          tmp_table_left_join = JOIN tmp_table BY age LEFT OUTER,tmp_table_2 BY age;

          DUMP tmp_table_left_join;

    10.右连接Right Join

         1)Mysql

            SELECT * FROM TMP_TABLE A RIGHT JOIN TMP_TABLE_2 B ON A.AGE=B.AGE;

         2)Pig

            tmp_table_right_join = JOIN tmp_table BY age RIGHT OUTER,tmp_table_2 BY age;

            DUMP tmp_table_right_join;

    11.全连接Full Join

         1)Mysql

            SELECT * FROM TMP_TABLE A  JOIN TMP_TABLE_2 B ON A.AGE=B.AGE

                UNION SELECT * FROM TMP_TABLE A LEFT JOIN TMP_TABLE_2 B ON A.AGE=B.AGE

                UNION SELECT * FROM TMP_TABLE A RIGHT JOIN TMP_TABLE_2 B ON A.AGE=B.AGE;

         2)Pig

            tmp_table_full_join = JOIN tmp_table BY age FULL OUTER,tmp_table_2 BY age;

            DUMP tmp_table_full_join;

 

     12.同时对多张表交叉查询

          1)Mysql

             SELECT * FROM TMP_TABLE,TMP_TABLE_2;

          2)Pig

             tmp_table_cross = CROSS tmp_table,tmp_table_2;

             DUMP tmp_table_cross;

 

     13.分组GROUP BY

         1)Mysql

            SELECT * FROM TMP_TABLE GROUP BY IS_MALE;

         2)Pig

            tmp_table_group = GROUP tmp_table BY is_male;

            DUMP tmp_table_group;

      14.分组并统计

           1)Mysql

             SELECT IS_MALE,COUNT(*) FROM TMP_TABLE GROUP BY IS_MALE;

           2)Pig

              tmp_table_group_count = GROUP tmp_table BY is_male;

              tmp_table_group_count = FOREACH tmp_table_group_count GENERATE group,COUNT($1);

              DUMP tmp_table_group_count;
 

      15.查询去重DISTINCT

           1)MYSQL

              SELECT DISTINCT IS_MALE FROM TMP_TABLE;

           2)Pig

              tmp_table_distinct = FOREACH tmp_table GENERATE is_male;

              tmp_table_distinct = DISTINCT tmp_table_distinct;

              DUMP  tmp_table_distinct;

 

分享到:
评论

相关推荐

    pig编程指南中的样例脚本、UDF、数据集

    编写UDF时,需要继承Pig的特定类,并实现特定的方法,然后在Pig脚本中通过`DEFINE`关键字引入。理解如何创建和使用UDF是提升Pig编程灵活性的关键。 数据集在Pig的学习过程中扮演了实验素材的角色。通过实际的数据,...

    PIG微服务前后端源码

    在微服务架构方面,PIG的源码可以教导我们如何将一个大型应用拆分为多个小型、独立的服务,每个服务都能在其自身的进程中运行,并通过HTTP/REST接口进行通信。这种架构设计提高了系统的可扩展性、可维护性和容错性。...

    大数据之pig 命令

    - **业务逻辑实现**:使用Pig实现复杂的业务逻辑时,通常需要通过一系列命令逐步实现;而Hive往往可以通过单条SQL语句来完成复杂的业务逻辑处理。 - **适用场景**:对于需要快速获取复杂业务逻辑处理结果的场景,...

    pig-hive编程指南

    5. HiveQL的SQL兼容性:虽然HiveQL与标准SQL存在差异,但大多数SQL操作都能在Hive中实现。 三、Pig与Hive的比较 1. 面向对象:Pig更适合处理复杂的数据结构,如多维数据;而Hive更适合处理结构化的表格数据。 2. ...

    Apache Hadoop---Pig.docx

    在 MapReduce 层面,Pig Latin 操作被转换成一系列任务,这些任务在 Hadoop 集群中并行执行,从而实现高效的分布式计算。 Apache Pig 的核心特性是其 Pig Latin 语言,它提供了丰富的数据类型和操作符,使得数据...

    pig的mapreduce模式的安装及配置.docx

    在Hadoop生态系统中,Pig常常用于数据清洗、转换和分析任务,为数据科学家和工程师提供了更便捷的数据处理方式。 **一、Pig的安装** 1. **下载Pig**: 首先,你需要从Apache官网或镜像站点下载Pig的最新稳定版本,...

    pig学习笔记

    `Load` 用于读取数据到Pig中,`Store` 将处理后的数据写回到文件系统,`Dump` 则是在控制台上打印出数据集的内容。 - **Filter/Group/Order** :这些操作用于数据的筛选、分组和排序,是数据预处理的关键步骤。 - **...

    Apache Pig的性能优化.pdf

    根据给定的文件信息,我们可以深入探讨Apache Pig的性能优化及其在大数据处理中的角色与优势。首先,让我们从Apache Pig的基本概念入手。 ### Apache Pig概述 Apache Pig是一种高生产力的数据流语言和执行框架,...

    大数据技术基础实验报告-pig的安装配置与应用.doc

    6. **配置Pig**:在`pig.properties`或`pig-env.sh`中设置Hadoop的相关配置,如`hadoop_bin_dir`等。 7. **测试安装**:通过运行`pig`命令来检查Pig是否成功安装。可以在Local模式和MapReduce模式下测试,确保Pig能...

    《pig编程指南》英文非图片电子版 Programming.Pig.pdf

    Pig非常适用于数据处理的各种场景,尤其在需要执行复杂数据转换、分析大量数据集以及需要进行快速迭代开发的场合。Pig支持多种类型的数据输入输出,包括但不限于日志文件、数据库记录等。它也适用于那些需要对数据...

    tpch-pig:在Apache Pig中实现的TPC-H查询

    标题中的“tpch-pig”指的是一个项目,它实现了在Apache Pig中运行TPC-H查询的能力。Apache Pig是一个用于大数据分析的平台,它提供了一种高级的编程语言Pig Latin,使得用户可以处理大规模数据集,而无需关注底层的...

    Hadoop大数据技术-pig操作

    例如,通过Hive的Pig UDF,可以在Pig中使用Hive的SQL查询功能。 总之,Hadoop上的Pig操作为大数据分析提供了强大且易用的工具,通过简单的Pig Latin脚本,用户可以高效地处理大规模数据,进行复杂的数据挖掘和分析...

    Hadoop、HBase、Hive、Pig、Zookeeper资料整理

    Pig Latin抽象了MapReduce,使得用户无需直接编写Java代码即可实现复杂的数据处理任务,提高了开发效率。 5. **Zookeeper**:Zookeeper是一个分布式的协调服务,用于管理大型分布式系统的配置信息、命名服务、集群...

    Hadoop技术-Pig简介.pptx

    4. **可扩展性**:Pig允许用户自定义函数(UDF),可以使用Java等其他编程语言编写,并在Pig脚本中调用,增加了灵活性和处理能力。 5. **处理多种数据**:Pig不仅处理结构化数据,也能处理半结构化和非结构化数据,...

    Pig Latin: A Not-So-Foreign Language for Data Processing

    该论文主要介绍了Pig Latin这一新型编程语言的设计理念与实现机制,旨在解决大规模数据集的即席分析问题。 #### Pig Latin简介 在大数据时代背景下,互联网公司面临着海量数据的处理需求。为了满足这种需求,传统...

    hadoop pig vertica

    在 Pig 中,用户可以通过创建自定义的存储类来实现特定的数据加载和存储逻辑。DBStorage.java 可能实现了将 Pig Latin 作业的结果写入 Vertica 数据库的功能,或者从 Vertica 加载数据到 Pig 作业中。 在实际应用中...

    Pig分析报告.pdf

    2. **优化的执行计划**:编译器可以调整执行顺序以提高效率,例如在上面的示例中,先过滤 pagerank 再判断是否为 spam。 3. **快速开始和协作**:Pig 支持多种存储格式,用户可以自定义函数解析和输出数据,无需预先...

    web scale data mining using pig

    在Pig中可以通过以下方式实现标准差的计算: 1. **原始公式**:标准差的数学定义。 2. **分组计算**:按照URL、广告和评分进行分组。 3. **实现方法**:计算每组内的CTR均值、CTR平方的均值,进而得到CTR的标准差。...

Global site tag (gtag.js) - Google Analytics