概述:

Pig的安装很简单,注意一下几点:

1、设置系统环境变量:

export PIG_HOME=.../pig-x.y.z
export PATH=$PATH:$PIG_HOME/bin

设置完成后使用pig -help进行验证一下。

2、两种mode:

local mode:访问本地文件系统,进入shell时使用命令:pig -x local

MapReduce mode:pig将查询翻译为MapReduce作业,然后在hadoop集群上执行。此时,进入shell时的命令为:pig -x mapreduce 或者pig

hadoop@master:/usr/local/hadoop/conf$ pig -x mapreduce
Warning: $HADOOP_HOME is deprecated. 2013-08-16 16:18:52,388 [main] INFO org.apache.pig.Main - Apache Pig version 0.11.1 (r1459641) compiled Mar 22 2013, 02:13:53
2013-08-16 16:18:52,389 [main] INFO org.apache.pig.Main - Logging error messages to: /usr/local/hadoop/conf/pig_1376641132384.log
2013-08-16 16:18:52,470 [main] INFO org.apache.pig.impl.util.Utils - Default bootup file /home/hadoop/.pigbootup not found
2013-08-16 16:18:52,760 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://master:9000
2013-08-16 16:18:53,174 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to map-reduce job tracker at: master:9001

注意:使用MapReduce模式需要设置hadoop的配置文件hadoop-env.sh,加入:

export PIG_CLASSPATH=$HADOOP_HOME/conf

示例一:

.../in/ncdc/micro-tab/sample.txt文件的内容为:

1950	0	1
1950 22 1
1950 -11 1
1949 111 1
1949 78 1

在pig的shell下执行下列命令:

grunt> -- max_temp.pig: Finds the maximum temperature by year
grunt> records = LOAD 'hdfs://master:9000/in/ncdc/micro-tab/sample.txt'--在不确定自己设置的默认路径是什么的情况下使用hdfs完整路径
>> AS (year:chararray, temperature:int, quality:int);
grunt> filtered_records = FILTER records BY temperature != 9999 AND
>> (quality == 0 OR quality == 1 OR quality == 4 OR quality == 5 OR quality == 9);
grunt> grouped_records = GROUP filtered_records BY year;
grunt> max_temp = FOREACH grouped_records GENERATE group,
>> MAX(filtered_records.temperature);
grunt> DUMP max_temp;

pig同时提供ILLUSTRATE操作,以生成简洁明了的数据集。

grunt>ILLUSTRATE max_temp;

输出为:

示例二:

指南中关于注释的示例,在此处,略作修改,加入schema:

grunt> B = LOAD 'input/pig/join/B' AS (chararry,int);
grunt> A = LOAD 'input/pig/join/A' AS (int,chararry);
grunt> C = JOIN A BY $0, /* ignored */ B BY $1;
grunt> DESCRIBE C
C: {A::val_0: int,A::chararry: bytearray,B::chararry: bytearray,B::val_0: int}
grunt> ILLUSTRATE C

输出为:

----------------------------------------------------
| A | val_0:int | chararry:bytearray |
----------------------------------------------------
| | 3 | Hat |
| | 3 | Hat |
----------------------------------------------------
----------------------------------------------------
| B | chararry:bytearray | val_0:int |
----------------------------------------------------
| | Eve | 3 |
| | Eve | 3 |
----------------------------------------------------
-----------------------------------------------------------------------------------------------------------
| C | A::val_0:int | A::chararry:bytearray | B::chararry:bytearray | B::val_0:int |
-----------------------------------------------------------------------------------------------------------
| | 3 | Hat | Eve | 3 |
| | 3 | Hat | Eve | 3 |
| | 3 | Hat | Eve | 3 |
| | 3 | Hat | Eve | 3 |
-----------------------------------------------------------------------------------------------------------

注意:Pig Latin的大小写敏感性采用混合的规则,其中:

操作和命令是大小写无关;

别名和函数大小写敏感。

例如上例中:

grunt> describe c
2013-08-16 17:14:49,397 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1005: No plan for c to describe
Details at logfile: /usr/local/hadoop/conf/pig_1376641755235.log
grunt> describe C
C: {A::val_0: int,A::chararry: bytearray,B::chararry: bytearray,B::val_0: int}
grunt> DESCRIBE C
C: {A::val_0: int,A::chararry: bytearray,B::chararry: bytearray,B::val_0: int}

Hadoop: the definitive guide 第三版 拾遗 第十章 之Pig的更多相关文章

  1. Hadoop: the definitive guide 第三版 拾遗 第十二章 之Hive初步

    Hive简介 Hive是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据的机制 ...

  2. Hadoop: the definitive guide 第三版 拾遗 第十二章 之Hive分区表、桶

    Hive分区表 在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作.有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念.分区表指的是在创建表时指 ...

  3. Hadoop: the definitive guide 第三版 拾遗 第十三章 之HBase起步

    指南上这一章的开篇即提出:HBase是一个分布式的.面向列的开源数据库.如果需要实时的随机读/写超大规模数据集,HBase无疑是一个好的选择. 简介 HBase 是一个高可靠性.高性能.面向列.可伸缩 ...

  4. Hadoop: the definitive guide 第三版 拾遗 第四章

    第四章中提到了通过CompressionCodec对streams进行压缩和解压缩,并提供了示例程序: 输入:标准输入流 输出:压缩后的标准输出流 // cc StreamCompressor A p ...

  5. Hadoop – The Definitive Guide Examples,,IntelliJ

    IntelliJ Project for Building Hadoop – The Definitive Guide Examples http://vichargrave.com/intellij ...

  6. Hadoop: The Definitive Guide (3rd Edition)

    chapter 1 解决计算能力不足的问题,不是去制造更大的计算机,而是用更多的计算机来解决问题. 我们生活在一个数据的时代.“大数据”的到来不仅仅是影响到那些科研和金融机构,对小型企业以及我们个人都 ...

  7. 《Hadoop权威指南》(Hadoop:The Definitive Guide) 气象数据集下载脚本

    已过时,无法使用 从网上找到一个脚本,修改了一下 #!/bin/bash CURRENT_DIR=$(cd `dirname $0`; pwd) [ -e $CURRENT_DIR/ncdc ] || ...

  8. Introduction to Windows 8: The Definitive Guide for Developer

    <Windows 8应用开发权威指南>介绍 Introduction to Windows 8: The Definitive Guide for Developer 一.封面设计要求及文 ...

  9. MONGODB的内部构造 FROM 《MONGODB THE DEFINITIVE GUIDE》

    今天下载了<MongoDB The Definitive Guide>电子版,浏览了里面的内容,还是挺丰富的.是官网文档实际应用方面的一个补充.和官方文档类似,介绍MongoDB的内部原理 ...

随机推荐

  1. Windows Azure 存储的冗余存储选项和只读访问跨地域冗余存储

    我们很高兴地宣布,现在我们使客户可以获得对数据更高的读取可用性.该预览功能称为"只读访问- 跨地域冗余存储(RA-GRS)",使客户可以在存储帐户主要区域无法读取数据时,通过跨 ...

  2. BZOJ 1088 扫雷Mine (递推)

    题解:如果确定了第一排前两个数,那么剩下的数是唯一确定的,所以只要分情况讨论即可. #include <cstdio> #include <cstring> int n,a[1 ...

  3. android 中文 api (71) —— BluetoothServerSocket[蓝牙]

    前言 本章内容是  android.bluetooth.BluetoothServerSocket,为Android蓝牙部分的章节翻译.服务器通讯套接字,与TCP ServerSocket类似.版本为 ...

  4. 概率图模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-多项式贝叶斯

    之前忘记强调了一个重要差别:条件概率链式法则和贝叶斯网络链式法则的差别 条件概率链式法则 贝叶斯网络链式法则,如图1 图1 乍一看非常easy认为贝叶斯网络链式法则不就是大家曾经学的链式法则么,事实上 ...

  5. SQL SERVER 2005 同步复制技术(转)

    SQL SERVER 2005 同步复制技术 以下实现复制步骤(以快照复制为例) 运行平台SQL SERVER 2005 一.准备工作: 1.建立一个 WINDOWS 用户,设置为管理员权限,并设置密 ...

  6. C++的发展,特点和源程序构成

    最近一段时间在学习C++,也借了几本相关的书籍.因为之前主要用C#写程序,大概写了也有两年了吧.所以在回过头来学习C++,还是挺快的.但是我觉得光看书是不行的,要写!!因此我想把我整个学习C++的过程 ...

  7. (Problem 47)Distinct primes factors

    The first two consecutive numbers to have two distinct prime factors are: 14 = 2  7 15 = 3  5 The fi ...

  8. 命名空间“System.Web.Mvc”中不存在类型或命名空间“Ajax”(是否缺少程序集引用?)

    原文  http://www.cnblogs.com/LJP-JumpAndFly/p/4109602.html 好吧,非常激动的说,这个问题搞了我一个晚上,网上的帖子太少了,好像不超过2篇,而且说得 ...

  9. 移动平台WEB前端开发技巧汇总(转)

    最近我很关注移动前端的知识,但做为一个UI设计师和web前端工作人员没有这个工作环境接触,做为门外汉,网上系统的知识也了了,一直有种雾里看花的感觉,见到本文,我自己是奉为经典.所以我分享之后又专门打笔 ...

  10. QLabel设置行间距(使用html的语法,比较巧妙)

    1.设置行间距 QLabel没有设置行间距的函数,所以这种办法是行不通的.只能采用其它类似的方法来实现,例如设置行高,使用样式代码如下: <p style='line-height:18px'& ...