博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[hadoop系列]Pig的安装和简单演示样例
阅读量:4537 次
发布时间:2019-06-08

本文共 3928 字,大约阅读时间需要 13 分钟。

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

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

 

转载于:https://www.cnblogs.com/mfrbuaa/p/4358163.html

你可能感兴趣的文章
衰减学习率真的有用吗?
查看>>
ORACLE 建库过程总结
查看>>
Ogre1.8.1 Basic Tutorial 6 - The Ogre Startup Sequence
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用...
查看>>
c# Winform 开发分屏显示应用程序
查看>>
canvas刮奖
查看>>
添加源ubuntu_x64 安装 Adobe Reader
查看>>
给datalist加自动编号(解决博客的第XX楼)
查看>>
BZOJ3282: Tree (LCT模板)
查看>>
ES6中变量的解构赋值
查看>>
数据绑定控件Reperter
查看>>
【codeforces】【比赛题解】#937 CF Round #467 (Div. 2)
查看>>
Yii DataProvider
查看>>
BestCoder Round #14 B 称号 Harry And Dig Machine 【TSP】
查看>>
hdu 1114 Piggy-Bank
查看>>
maven集成tomcat插件启动报错
查看>>
Boost库编译安装
查看>>
算法复习——数位dp(不要62HUD2089)
查看>>
Spark2.1.0——运行环境准备
查看>>
noip模拟赛 寻宝之后
查看>>