inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish
)。(来源:http://blog.csdn.net/inkfish)

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

。(来源:http://blog.csdn.net/inkfish)

前提条件:
(来源:http://blog.csdn.net/inkfish)

  • Linux/Unix系统,或带有Cygwin的Windows操作系统,我是用的是Ubuntu 8.04;
  • Hadoop 0.20.X
  • JDK 1.6或更高
  • Ant 1.7(可选,假设想自己编译Pig的话则须要)
  • JUnit 4.5(可选,假设自己想执行单元測试的话则须要)

Pig的安装
(来源:http://blog.csdn.net/inkfish)

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已经正确安装完成。(来源:http://blog.csdn.net/inkfish)

Pig的执行模式
(来源:http://blog.csdn.net/inkfish)

1.本地模式

  Pig执行于本地模式,仅仅涉及到单独的一台计算机。

2.MapReduce模式

  Pig执行于MapReduce模式,须要能訪问一个Hadoop集群,而且须要装上HDFS。

Pig的调用方式
(来源:http://blog.csdn.net/inkfish)

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

Pig的演示样例代码
(来源:http://blog.csdn.net/inkfish)

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

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

  script文件:id.pig(来源:http://blog.csdn.net/inkfish)

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

  local模式的java文件:Idlocal.java(来源:http://blog.csdn.net/inkfish)

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(来源:http://blog.csdn.net/inkfish)

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如不在当前文件夹,则要指明其全路径。(来源:http://blog.csdn.net/inkfish)

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目录则须要给出绝对路径。
(来源:http://blog.csdn.net/inkfish)

2.Pig script方式

  script方式中,用pig命令启动,后面带要执行的.pig文件就可以,如:

    $ pig -x local id.pig

    $ pig id.pig

    $ pig -x mapreduce id.pig

(来源:http://blog.csdn.net/inkfish)

3.嵌入式方式(来源:http://blog.csdn.net/inkfish)

  嵌入式方式与执行于执行普通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)

[hadoop系列]Pig的安装和简单演示样例的更多相关文章

  1. Thrift的安装和简单演示样例

    本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述                                           ...

  2. Libevent 学习笔记 (1)——Libevent 2.0安装与简单演示样例

    今天開始学习Libevent . Libevent 是开源社区的一款高性能I/O框架库. 主要特点有: 1 跨平台. 2 统一事件源 3 线程安全 4 基于Reactor 今天主要进行了Libeven ...

  3. JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例

    什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...

  4. Introspector(内省)简单演示样例 与 简单应用

    简单演示样例: package com.asdfLeftHand.test; import java.beans.BeanDescriptor; import java.beans.BeanInfo; ...

  5. 一则简单演示样例看Oracle的“无私”健壮性

    Oracle的强大之处就在于他能总帮助让你选择正确的运行计划,即使你给了它错误的指示. 实验: 1. 创建測试表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...

  6. Android通过startService播放背景音乐简单演示样例

    关于startService的基本使用概述及其生命周期可參见博客<Android中startService的使用及Service生命周期>. 本文通过播放背景音乐的简单演示样例,演示sta ...

  7. 百度地图 Android SDK - 检索功能使用的简单演示样例

    百度地图 SDK 不仅为广大开发人员提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发人员提供了多种 LBS 检索的能力. 通过这些接口,开发人员能够轻松的訪问百度的 LBS 数据,丰富自己的移 ...

  8. RHEL5 X86-64上安装Oracle 11gR2演示样例与总结

    进入Oracle DBA行业也有好几年了,可是说到安装Oracle的经验,我还真不是特别多,印象中刚開始每次安装都有点磕磕碰碰,随着接触Oracle的时间越来越长,各方面的原理.机制也都有一定的了解后 ...

  9. MyBatis对数据库的增删改查操作,简单演示样例

    之前一直有用Hibernate进行开发.近期公司在使用Mybatis.依据网上的演示样例,做了一个简单的Demo,以便日后复习 使用XMl方式映射sql语句 整体结构例如以下图 watermark/2 ...

随机推荐

  1. 梳排序(Comb sort)

    Comb Sort,梳排序或者梳子排序,就像梳子那样有间隔地比较两个数,很形象,O(n*logn)时间复杂度,O(1)空间复杂度,属于不稳定的排序算法.算法的思想是使逆序的元素尽可能快地移动到最终的位 ...

  2. 【操作系统】:Main features of the X86-64

    The combination of the new hardware supplied by Intel and AMD ,and the new versions of GCC targeting ...

  3. cocos2dx进阶学习之瓦片地图编辑器

    之前学习了瓦片地图类,现在我们来学习下瓦片地图制作工具 这个是开源的工具,可以从网上下载,下面我们演示下怎么做地图 步骤1 将需要用到的图片放到一个目录下,比如我机器上就是d:\tiled,这些图片是 ...

  4. HDU 4741 Save Labman No.004 2013 ACM/ICPC 杭州网络赛

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4741 题意:给你两条异面直线,然你求着两条直线的最短距离,并求出这条中垂线与两直线的交点. 需要注意的是 ...

  5. vijos 1115 火星人

    说了那么多.事实上就是遍历全排列 #include<iostream> #include<cstdio> #include<algorithm> #include& ...

  6. 一个例子:HelloWorld

    作为C语言来说,我是用的是QT Creator作为开发工具. 事实上使用什么工具无所谓.重要的是学到实用的知识. 第一个实例程序就是HelloWorld程序.上代码: 版权声明:您好,转载请离开我的博 ...

  7. Android自定义控件实战——水流波动效果的实现WaveView

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/38556891 水流波动的波形都是三角波,曲线是正余弦曲线,但是Android ...

  8. 【linux】 linux gpio操作

    欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http:// ...

  9. POJ 3384 Feng Shui 凸包直径 + 半平面交

    G++一直没有过了 换成 C++果断A掉了...It's time to bet RP. 题意:给一个多边形,然后放进去两个圆,让两个圆的覆盖面积尽量最大,输出两个圆心的坐标. 思路:将多边形的边向里 ...

  10. <转> 30 个有关 Python 的小技巧

    目录[+] 1.1 拆箱 1.2 拆箱变量交换 1.3 扩展拆箱(只兼容python3) 1.4 负数索引 1.5 切割列表 1.6 负数索引切割列表 1.7指定步长切割列表 1.8 负数步长切割列表 ...