pig中各种sql语句的实现

2024-08-20 18:18
文章标签 sql 实现 语句 database pig

本文主要是介绍pig中各种sql语句的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pig中各种sql语句的实现  

     Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。使用pig可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。我们可以在不熟悉map/reduce的情况下使用类似与sql语句的pig latin语句来实现复杂的数据处理。  

    我这里以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的详细使用说明,请参考“pig学习教程”:http://blog.csdn.net/zhu_xun/article/details/16819169

这篇关于pig中各种sql语句的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090814

相关文章

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小