`
guoyunsky
  • 浏览: 858983 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
3d3a22a0-f00f-3227-8d03-d2bbe672af75
Heritrix源码分析
浏览量:207189
Group-logo
SQL的MapReduce...
浏览量:0
社区版块
存档分类
最新评论

Hadoop Pig学习笔记(一) 各种SQL在PIG中实现

 
阅读更多

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

  欢迎加入Hadoop超级群: 180941958 

 

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

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

    tmp_file_1:

zhangsan	23	1
lisi	24	1
wangmazi	30	1
meinv	18	0
dama	55	0

   tmp_file_2:

1	a
23	bb
50	ccc
30	dddd
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;

 

 

更多技术文章、感悟、分享、勾搭,请用微信扫描:

10
0
分享到:
评论
2 楼 dipwater 2014-07-20  
28万次流量只有1个评论5个顶。。。我帮楼主顶顶
1 楼 zhuliuwu 2013-11-05  
可以留个QQ吗,最近项目中刚开始使用pig,业务的逻辑挺复杂,有很多判断,在编写pig代码过程,有很一些问题,可以交流一下吗,本人QQ:270518116,或者留下你的QQ或其它通信方式,多谢了.

相关推荐

    pig学习笔记

    ### Pig学习笔记精要 **Pig** 是一个在 **Hadoop** 平台上用于数据分析的高级工具,它提供了一种非程序化的数据流语言,称为 **Pig Latin** ,来处理大规模的数据集。Pig 的设计目的是为了简化 **MapReduce** 的...

    HADOOP学习笔记

    【HADOOP学习笔记】 Hadoop是Apache基金会开发的一个开源分布式计算框架,是云计算领域的重要组成部分,尤其在大数据处理方面有着广泛的应用。本学习笔记将深入探讨Hadoop的核心组件、架构以及如何搭建云计算平台。...

    Hadoop学习笔记.pdf

    - Hive:为数据仓库设计,提供了SQL方言HiveQL,允许用户编写类似SQL的查询语句来操作Hadoop中的数据。 - Sqoop:是一个开源工具,用于在Hadoop和关系数据库之间高效地传输大量数据。 - Oozie:是一个用于管理Hadoop...

    hadoop学习资料(一)

    Hadoop学习资料(一)包含了从第一周到第十六周的课程笔记,是作者在深入学习Hadoop过程中积累的知识结晶。这份资料对于那些想要踏入大数据处理领域的初学者或者是正在提升Hadoop技能的人来说,无疑是一份宝贵的资源...

    Hadoop数据分析平台学习笔记

    ### Hadoop数据分析平台学习笔记 #### 一、Hadoop概述 **Hadoop**是一个开源软件框架,用于分布式存储和处理大型数据集。它的设计灵感来源于Google的论文,其中包括Google文件系统(GFS)和MapReduce计算模型。...

    hadoop学习笔记

    Hadoop 学习笔记 Hadoop 是 Apache 开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持 MapReduce 分布式计算的软件架构。 其核心就是 HDFS 和 MapReduce。HBase、Hive 等,这些都是...

    hadoop笔记打包下载(想学hadoop不下载后悔)

    这个压缩包“hadoop笔记打包下载(想学hadoop不下载后悔)”显然是一个丰富的学习资源集合,涵盖了Hadoop生态系统的多个重要组成部分。下面将详细解释这些关键知识点。 1. **Hadoop HDFS(Hadoop Distributed File ...

    hadoop学习总结1-5

    Hadoop为大数据分析提供了基础架构,通过与各种数据处理工具的结合,如Pig、Hive、Spark,可以实现复杂的数据挖掘和机器学习任务。 10. **未来发展趋势**: 随着云计算和容器技术的发展,Hadoop正逐步与...

    hadoop3.1.3学习资料

    Hadoop 3.1.3 是一个开源框架,主要用于分布式存储和处理大数据。这个学习资料包含的"笔记"可能涵盖了Hadoop的核心组件、生态系统、安装配置以及实际操作等多个方面。以下是对Hadoop 3.1.3的一些关键知识点的详细...

    hadoop笔记

    Hadoop是大数据处理领域的重要框架,它以分布式计算模型为核心,允许在大规模集群上处理海量数据。本笔记将深入探讨Hadoop的...通过学习Hadoop,我们可以更好地应对大数据时代的挑战,实现数据驱动的业务决策和创新。

    hadoop实战——初级部分学习笔记 2

    本文将基于私塾在线《Hadoop实战——初级部分》的学习笔记,深入探讨Hadoop的基本概念、核心组件以及在实际中的应用。 #### 二、为何选择学习Hadoop 1. **市场需求**:当前社会产生了大量的数据,例如每分钟...

    传智播客hadoop资料文档和笔记

    《传智播客Hadoop资料文档和笔记》是...通过这份《传智播客Hadoop资料文档和笔记》,学习者不仅可以全面了解Hadoop的基础知识,还能深入探讨其在实际项目中的应用,为成为专业的Hadoop开发者或数据工程师奠定坚实基础。

    Hadoop开发者第一期-带书签文字版.pdf

    《Hadoop开发者第一期-带书签文字版》是一份专为Hadoop初学者和开发者设计的高清版学习资料,包含完整的目录结构和便于查阅的书签功能,且所有文字内容均可以复制,极大地提升了学习和参考的便利性。这份资料深入浅...

    完整图文版 阿里巴巴数据产品平台 大数据与云计算技术系列教程 Hadoop之Hive学习笔记(共63页).rar

    《阿里巴巴数据产品平台 大数据与云计算技术系列教程:Hadoop之Hive学习笔记》是一部深入探讨Hadoop生态中Hive技术的专业教程。这本笔记共计63页,旨在为读者提供一个全面、系统的学习Hive的平台,帮助读者理解和...

    大数据技术原理学习笔记.docx

    本笔记基于林子雨老师在MOOC上的《大数据技术原理》课程,旨在为IT从业者和大学生提供一个全面了解大数据的基础框架。 首先,我们要认识到大数据的发展背景。随着互联网的普及,以及物联网、社交媒体、移动设备等...

    Hadoop权威指南(第三版)英文版.pdf

    6. **数据处理与分析**:书中探讨了如何利用Hadoop进行数据预处理、清洗、转换和分析,包括使用SQL-on-Hadoop工具如Hive和Impala进行查询,以及使用Pig和Spark进行复杂的数据处理任务。 7. **案例研究与最佳实践**...

Global site tag (gtag.js) - Google Analytics