1.1 编写目的

介绍pig,一个不得不说的hadoop的扩展。

1.2 什么是pig

Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口。

1.3 pig的特点

1、专注于于大量数据集分析(ad-hoc analysis , ad-hoc 代表:a solution that has been custom designed for a specific problem );
      2、运行在集群的计算架构上,Yahoo Pig 提供了多层抽象,简化并行计算让普通用户使用;这些抽象完成自动把用户请求queries翻译成有效的并行评估计划,然后在物理集群上执行这些计划;
     3、提供类似 SQL 的操作语法;
     4、开放源代码;

1.4pig的主要用户

1、yahoo

2、twitter

1.5关于pig和hive

对于开发人员,直接使用Java APIs可能是乏味或容易出错的,同时也限制了Java程序员在Hadoop上编程的运用灵活性。于是Hadoop提供了两个解决方案,使得Hadoop编程变得更加容易。

•Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。

•Hive在Hadoop中扮演数据仓库的角色。Hive添加数据的结构在HDFS(hive superimposesstructure on data in HDFS),并允许使用类似于SQL语法进行数据查询。与Pig一样,Hive的核心功能是可扩展的。

Pig和Hive总是令人困惑的。Hive更适合于数据仓库的任务,Hive主要用于静态的结构以及需要经常分析的工作。Hive与SQL相似促使 其成为Hadoop与其他BI工具结合的理想交集。Pig赋予开发人员在大数据集领域更多的灵活性,并允许开发简洁的脚本用于转换数据流以便嵌入到较大的应用程序。Pig相比Hive相对轻量,它主要的优势是相比于直接使用HadoopJava APIs可大幅削减代码量。正因为如此,Pig仍然是吸引大量的软件开发人员。

第2章 安装pig

2.1 下载pig

下载pig的最新版本:

http://www.apache.org/dyn/closer.cgi/pig

我下载的是pig-0.10.0.tar.gz

2.2 安装pig

解压缩

tar zxvf pig-0.10.0.tar.gz

进入目录

cd pig-0.10.0

注意,pig是hadoop的工具,所以不需要修改原hadoop的配置。

将pig加入到环境变量中:

输入

cd ~

进入到用户主目录

vi .bashrc

最下边加入环境变量的配置

保存然后执行

. .bashrc

输入 pig -help进行测试,如果设置成功,则出现如下界面

如果想获取pig的源码,可以使用svn下载

http://svn.apache.org/repos/asf/pig/trunk

2.3 配置hadoop

进入目录$PIG_HOME/conf

修改配置文件,在pig.properties中加入

fs.default.name=hdfs://localhost:9000

mapred.job.tracker=localhost:9001

指向本地伪分布式的hdfs和mapreduce

在本地运行pig

pig -x local

得到如下界面

和hadoop一起运行

直接输入pig或者pig -x mapreduce

有可能出现下面的错误

Cannot findhadoop configurations in classpath (neither hadoop-site.xml nor core-site.xmlwas found in the classpath).

需要配置~/.bashrc或者/etc/profile,建议配置.bashrc文件,加入

exportHADOOP_HOME=/home/hadoop/hadoop-1.0.3

exportPIG_CLASSPATH=$HADOOP_HOME/conf

配置完成后可正常进入

第3章 grunt shell

3.1基本命令

Quit 退出grunt

kill hadoopID 终止正在运行的hadoop进程

set debug on 打开debug级别

使用命令包括:

help,quit,kill jobid,set debug [on|off],set job.name‘jobname’

文件命令包括:

cat,cd,copyFromLocal,copyToLocal,cp,ls,mkdir,mv,pwd,rm,rmf,exec,run

3.2查询测试

到安装目录下找到/tutorial/data/excite-sall.log文件,数据分为3列,按制表符分隔,第一列为用户ID,第二列为Unix时间戳,第三列为查询记录。

输入如下语句:

grunt> log =LOAD 'tutorial/data/excite-small.log' AS (user,time,query);

将数据装载到一个称为log的别名中。

查询返回4个元组并显示:

grunt> lmt =LIMIT log 4;

grunt> DUMPlmt;

得到结果:

PIG中的读写操作:

LOAD

从文件装载数据到一个关系,LOAD的input文件路径为hadoop的文件系统的路径。

LIMIT

限制元组个数为n

DUMP

显示一个关系的内容,主要用于调试

STORE

将一个关系中的数据存储到一个目录中

输入执行:

grunt> log =LOAD '/home/lgstar888/hadoop/pig-0.10.0/tutorial/data/excite-small.log' AS(user:chararray,time:long,query:chararray);

grunt> grpd =GROUP log BY user;

grunt> cntd =FOREACH grpd GENERATE group,COUNT(log);

grunt> STOREcntd INTO 'output';

用于统计每个用户查询发起的个数

使用grunt> DESCRIBE log;

查看schema

log: {user:chararray,time: long,query: chararray}

pig中的诊断运算符:

DESCRIBE alias;

显示一个关系的schema

EXPLAIN

显示用于计算一个关系的执行计划

ILLUSTRATE alias

逐步显示数据如何被转换

AVG

求平均值

CONCAT

连接两个字符串

COUNT

计算一个包中的元组个数

DIFF

比较一个元组中的两个字段

MAX

计算在一个单列包中的最大值

MIN

计算在一个单列包中的最小值

SIZE

计算元素的个数

SUM

计算在一个单列包中的数值的总和

IsEmpty

检查一个包是否为空

更多的相关的使用与配置已整理到

hadoop pig相关推荐

  1. Hadoop:pig 安装及入门示例

    pig是hadoop的一个子项目,用于简化MapReduce的开发工作,可以用更人性化的脚本方式分析数据. 一.安装 a) 下载 从官网http://pig.apache.org下载最新版本(目前是0 ...

  2. [db] hadoop pig

    hadoop && pig Hadoop 最近需要用到hadoop操作,发现hadoop的官网真的良心的,没那么多废话,直接说明白怎么用,而且还是中文的,简单粗暴啊!!! hadoop ...

  3. Hadoop pig进阶语法

    本文来自与作者阅读 Programming Pig 所做的笔记,转载请注明出处 http://www.cnblogs.com/siwei1988/archive/2012/08/06/2624912. ...

  4. Hadoop Pig学习笔记 各种SQL在PIG中实现

    我这里以Mysql 5.1.x为例,Pig的版本是0.8 同时我将数据放在了两个文件,存放在/tmp/data_file_1和/tmp/data_file_2中.文件内容如下: tmp_file_1: ...

  5. Apache Hadoop Pig 源代码分析(2)

    Pig的核心代码剥离出来后,我们可以慢慢深入到代码内部去了. 网上大多数源代码分析的文章,都是从几个核心类开始分析,画类图.流程图等等.现在让我们换个方式,像剥洋葱那样,从外围开始入手, 一步步深入到 ...

  6. Hadoop Pig 使用中碰到的问题与例子

    在Hive中以默认的格式存储一个外部表(External),从Pig中读取,直接使用PigStorage()即可,rg.apache.pig.piggybank.storage.HiveColumna ...

  7. Hadoop 之Pig的安装的与配置之遇到的问题---待解决

    1. 前提是hadoop集群已经配置完成并且可以正常启动:以下是我的配置方案: 首先配置vim /etc/hosts 192.168.1.64 xuegod64 192.168.1.65 xuegod ...

  8. Hadoop学习笔记—16.Pig框架学习

    Hadoop学习笔记-16.Pig框架学习 一.关于Pig:别以为猪不能干活 1.1 Pig的简介 Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin, ...

  9. ssis组件_使用SSIS Hadoop组件连接到Apache Hive和Apache Pig

    ssis组件 In our previously published articles in this series, we talked about many SSIS Hadoop compone ...

最新文章

  1. phpMyAdmin操作之改管理员密码
  2. SVN用户验证,调错
  3. PHP学习笔记:php二手交易市场系统
  4. oracle unpivot 空值,sql – 处理UNPIVOT中的NULL值
  5. SecurityManager篇
  6. 在linux中安装adb和fastboot工具
  7. 安卓bin固件文件编辑器_摄像头恶意固件制作指南
  8. 软件设计模式学习笔记(八)
  9. 菜鸟学IT之Hadoop综合大作业
  10. Python Spider入门
  11. 贾扬清:把生命浪费在有意思的事情上
  12. win10 路由表配置
  13. 最大疯子树:树形DP优化:二次扫描+换根法(poj3585)
  14. 只谈链不谈币,区块链会发展成什么样的方向?
  15. 完整的连接器设计手册_深度解析特斯拉的电池快充连接器技术|附视频
  16. MUI、HTML5+、HBuilder实现透明渐变导航栏+自定义按钮(右上角分享按钮)
  17. android程序员周记,程序员实习周记100篇
  18. 西航计算机学院学生会,西安航空学院“计算机学院一家亲”主题破冰晚会顺利举...
  19. Abaqus启动报错 FlexNet Licensing error:-7,96
  20. 快速扫描局域网主机的方式

热门文章

  1. 使用ansible剧本源码包安装nginx
  2. java hibernate 下载,Download the Hibernate Tools
  3. HNUCM2020年春季ACM集训队热身赛-第1场题解
  4. 2020表格标签、课堂笔记
  5. 我学UML建模系列之核心元素 -------- 版型(类型)
  6. Satwe楼板能用弹性模计算吗_PKPM2010年问题解答汇总
  7. 打开 政务上链 应用场景
  8. webstrom TsLint配置
  9. webpack:进阶用法(一)
  10. 使用宁盾LDAP目录服务为WiKi等开源系统提供统一身份认证