[Hadoop]转载-Pig的简单介绍

Pig是Yahoo!捐献给Apache的一个项目,目前还在Apache孵化器(incubator)阶段,目前版本是v0.5.0。Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-like语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简易的操作和编程接口。本文介绍了Pig的安装及简单示例的运行,主要参考/翻译自官方文档的Pig Setup 。 

前提条件: 

Linux/Unix系统,或带有Cygwin的Windows操作系统,我是用的是Ubuntu 8.04; 
Hadoop 0.20.X 
JDK 1.6或更高 
Ant 1.7(可选,如果想自己编译Pig的话则需要) 
JUnit 4.5(可选,如果自己想运行单元测试的话则需要) 
Pig的安装 

1.下载Pig 
  可以去Pig的官方主页下载最新的Pig,在写本篇文章时,最新版本是Pig 0.5.0 
2.解压缩 
  $ tar -xvf pig-0.5.0.tar.gz 
  我一般喜欢把pig装在/opt/hadoop/pig-0.5.0目录下 
3.设置环境变量 
  为了便于Pig以后的升级,我创建了一个软链接,环境变量指向软链接的目录,而软链接指向最新的Pig版本。
  $ ln -s /opt/hadoop/pig-0.5.0 /opt/hadoop/pig 
  编辑/etc/enviroment,在PATH加入Pig的bin子目录路径(也可以修改~/.bashrc或~/.profile)。 
4.验证安装完成 
  重新进入终端,键入env命令,应该能看到PATH已经生效。键入pig -help命令,则出现帮助信息,代表Pig已经正确安装完毕。 

Pig的运行模式 

1.本地模式 
  Pig运行于本地模式,只涉及到单独的一台计算机。 
2.MapReduce模式 
  Pig运行于MapReduce模式,需要能访问一个Hadoop集群,并且需要装上HDFS。 

Pig的调用方式 

Grunt shell方式:通过交互的方式,输入命令执行任务; 
Pig script方式:通过script脚本的方式来运行任务; 
嵌入式方式:嵌入java源代码中,通过java调用来运行任务。 
Pig的示例代码 

  下面就分别介绍这三种不同的调用方式,首先,先展示一下示例需要用到的源代码,这部分源代码与官方文档中的一样,但有如下修改: 

修正了官方文档中一个错误,即id.pig最后一行id.out两侧的全角单引号改为半角单引号; 
2.修正了官方文档中一个错误,即idmapreduce.java的runIdQuery方法第一行末尾少一个分号; 
3.按照Java常见的命名规范,类名首字母大写。 
  script文件:id.pig

view plaincopy
A = load 'passwd' using PigStorage(':');
B = foreach A generate $0 as id;
dump B;
store B into ‘id.out’;  

  local模式的java文件:Idlocal.java 

view plaincopy
import java.io.IOException;
import org.apache.pig.PigServer;
public class idlocal{
public static void main(String[] args) {
try {
    PigServer pigServer = new PigServer("local");
    runIdQuery(pigServer, "passwd");
    }
    catch(Exception e) {
    }
 }
public static void runIdQuery(PigServer pigServer, String inputFile) throws IOException {
    pigServer.registerQuery("A = load '" + inputFile + "' using PigStorage(':');");
    pigServer.registerQuery("B = foreach A generate $0 as id;");
    pigServer.store("B", "id.out");
 }
}  

  mapreduce模式的java文件:Idmapreduce.java

view plaincopy
import java.io.IOException;
import org.apache.pig.PigServer;
public class idmapreduce{
   public static void main(String[] args) {
   try {
     PigServer pigServer = new PigServer("mapreduce");
     runIdQuery(pigServer, "passwd");
   }
   catch(Exception e) {
   }
}
public static void runIdQuery(PigServer pigServer, String inputFile) throws IOException {
   pigServer.registerQuery("A = load '" + inputFile + "' using PigStorage(':');");
   pigServer.registerQuery("B = foreach A generate $0 as id;");
   pigServer.store("B", "idout");
   }
}  

  两个java类需要进行编译,编译命令: 
    javac -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idlocal.java 
    javac -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idmapreduce.java 
  其中pig-0.5.0-core.jar如不在当前目录,则要指明其全路径。 

1.Grunt shell方式 
  Grunt shell方式首先用pig命令启动,pig命令可以加参数“-x local”代表本地模式,或“-x mapreduce”代表mapreduce模式,默认mapreduce模式。 
    $ pig -x local 
    $ pig 
    $ pig -x mapreduce 
  按行输入命令: 
    grunt> A = load 'passwd' using PigStorage(':'); 
    grunt> B = foreach A generate $0 as id; 
    grunt> dump B; 
    grunt> store B into 'out'; 
  其中,“dump B”表示在屏幕中显示结果,“store B into 'out'”表示把结果输出到out文件/文件夹中。在local模式中,out文件写入到当前目录;mapreduce中,out文件夹则需要给出绝对路径。 

2.Pig script方式 
  script方式中,用pig命令启动,后面带要运行的.pig文件即可,如: 
    $ pig -x local id.pig 
    $ pig id.pig 
    $ pig -x mapreduce id.pig 

3.嵌入式方式 

  嵌入式方式与运行于运行普通java类方式没有任何不同,如: 
    java -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idmapreduce 
    java -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idlocal 

文章出处:http://blog.csdn.net/inkfish/article/details/5205999

时间: 2024-12-21 20:22:46

[Hadoop]转载-Pig的简单介绍的相关文章

Hadoop 一二事(1) - 简单介绍与杂谈

大数据大数据,身边很多朋友都在谈大数据,Big Data!!! 到底是什么,用来干嘛的,也很少有人说得出一二,那今天开始就简单说说这一二事吧 hadoop 的来源:是作者女儿的一个玩具 - 一只黄色的大象 发音 /hadu:p/  在Apache旗下作为一个开源项目 它不是云计算,却是云计算中的一部分,属于大数据这块 hadoop是一个开源的分布式计算系统   hadoop所解决的问题:      海量数据存储 - HDFS (分布式文件系统,分布在多台电脑上进行存储)可以理解为一个大型的网盘,

HTTPS协议的简单介绍

貌似最近百度的主页弄成了https.国内越来越多的网站也在https化. 大学学的信息安全,这块知识不能生疏啊,果断整理下. 如何区分HTTP和HTTPS: 对于很多人来说,如何鉴别HTTPS比知道HTTP更为重要.特别是涉及资金交易这类的操作时,尤其要注意是否使用HTTPS协议,证书是否有效.相对而言,证书有效的网站通常不会是钓鱼网站.目前,证书伪造还几乎不可能,所以这块是可信的. 因此,如何辨别网站是否为HTTPS,是十分重要的.事实上,浏览器总是很清晰的标识出来了.通常都在URL栏里.认准

Windows 2008 修改密码策略简单介绍

Windows2008修改密码策略简单介绍 Windows的密码策略,确实是挺繁琐的,刚接触SharePoint2010,装的windows2008 R2,就遇到了改密码策略的问题. 打开本地安全策略,找到账户策略-密码策略,点击,发现更改是灰色.            修改,打开组策略管理(管理工具),如下图,在"Default Domain Policy"上右键编辑.            在弹出的窗口上,编辑相应策略即可,如下图       编辑完成后,策略还没有被应用,还要运行

SharePoint 解决方案手动打包简单介绍

介绍:在使用SharePoint中,我们经常需要做的就是打包解决方案,我们来介绍下SharePoint解决方案的手动部署,我自己觉得,解决方案是SharePoint中非常好的一个功能,部署和使用起来相当方便,尤其配合Feature的使用,可以对相应功能的开启和关闭,废话不说了,开始我们的解决方案打包部署. 前期准备-[makecab命令..ddf格式文件.manifest.xml],了解下以上三项,这个对于手动打包解决方案,是非常必要的. ·Makecab命令 MakeCAB是微软提供的制作CA

Dockerfile的简单介绍

Dockerfile是Docker打包镜像时使用的说明文件,类似于构建rpm包的spec文件.里面由一些指令和配置构成.本文将一些Dockerfile的编写.其实我们可以把它看成就是spec的一个扩展版. 总的语法也和spec很像,以这样的语句来表示.支持#注释. 1 命令 参数 举个栗子: 这是个很简单的Dockerfile. 1 #指定父镜像 2 FROM fedora 3 #作者信息 4 MAINTAINER kryptosx 5 #安装命令 6 RUN yum install -y me

asp入门教程:ASP Request 简单介绍

asp入门教程:ASP Request 简单介绍,在ASP Request对象是用来获取信息的用户.它有两种方法form 与querystring的, 下面我们来看看request.from 这里是专门用于表单如. <form name=a action=? > <input name=b value='this is request.form' /> </form> asp代码如下. <% response.write request.from("b&

简单介绍Python2.x版本中的cmp()方法的使用

  这篇文章主要介绍了简单介绍Python2.x版本中的cmp()方法的使用,然而该方法在Python3.x版本中已并不再内置...需要的朋友可以参考下 cmp()方法比较两个列表的元素. 语法 以下是cmp()方法的语法: ? 1 cmp(list1, list2) 参数 list1 -- 这是要进行比较的第一个列表 list2 -- 这是要进行比较的第二个列表 返回值 如果元素是相同类型的,执行比较,并返回结果.如果元素是不同的类型,检查,看看他们是否是数字 如果是数字必要时强制进行数字比较

WML教程2:简单介绍关于WML文件的概念WML Decks

概念|教程 这里简单介绍一个关于WML文件的概念,其他的细节问题会在后面的章节还详细介绍. 声明由于WML语言继承于XML,所以一个有效的WML文档必须包含一个XML声明和一个文件类型声明. 以下就是一个最常用的声明,由于WML语法要求非常严格,为了避免出错,制作者可以直接拷贝粘贴到制作文档. <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" &quo

简单介绍CSS结合JS的运用

css|js 利用CSS配合Javascript的可以做很多更酷的动态页面效果,在本教程的最后给大家简单介绍一下CSS配合JS的应用.首先,我们要搞清楚事件和动作的概念.在客户端脚本中,JavaScript 通过对事件进行响应来获得与用户的交互.例如,当用户单击一个按钮或者在某段文字上移动鼠标时,就触发了一个单击事件或鼠标移动事件,通过对这些事件的响应,可以完成特定的功能(例如,单击按钮弹出对话框,鼠标移动到文本上后文本变色等). 下面介绍几种常见的事件(还用更多事件,请查阅相关资料): onC