[hadoop系列]Pig的安装和简单示例

简介:

  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)

 

目录
相关文章
|
5月前
|
消息中间件 分布式计算 大数据
【大数据技术Hadoop+Spark】Flume、Kafka的简介及安装(图文解释 超详细)
【大数据技术Hadoop+Spark】Flume、Kafka的简介及安装(图文解释 超详细)
77 0
|
13天前
|
分布式计算 Hadoop Linux
找到Hadoop的安装目录
【4月更文挑战第19天】具体的安装目录可能因您的安装方式和环境而有所不同。如果您在安装Hadoop时遵循了特定的教程或文档,建议参考该教程或文档中的安装目录信息。
11 3
|
14天前
|
分布式计算 Hadoop 大数据
[大数据] mac 史上最简单 hadoop 安装过程
[大数据] mac 史上最简单 hadoop 安装过程
|
19天前
|
资源调度
Hadoop3的安装
Hadoop3的安装
19 0
|
29天前
|
分布式计算 Hadoop Java
centos 部署Hadoop-3.0-高性能集群(一)安装
centos 部署Hadoop-3.0-高性能集群(一)安装
25 0
|
5月前
|
消息中间件 存储 分布式计算
Hadoop学习笔记(HDP)-Part.19 安装Kafka
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
78 0
Hadoop学习笔记(HDP)-Part.19 安装Kafka
|
4月前
|
分布式计算 资源调度 Hadoop
在Linux系统上安装Hadoop的详细步骤
【1月更文挑战第4天】在Linux系统上安装Hadoop的详细步骤
443 0
|
5月前
|
存储 分布式计算 Hadoop
hadoop 安装系列教程二——伪分布式
hadoop 安装系列教程二——伪分布式
48 0
|
5月前
|
分布式计算 Hadoop Java
hadoop系列——linux hadoop安装
hadoop系列——linux hadoop安装
78 0
|
5月前
|
分布式计算 Hadoop Java
Hadoop【部署 01】腾讯云Linux环境CentOS Linux release 7.5.1804单机版hadoop-3.1.3详细安装步骤(安装+配置+初始化+启动脚本+验证)
Hadoop【部署 01】腾讯云Linux环境CentOS Linux release 7.5.1804单机版hadoop-3.1.3详细安装步骤(安装+配置+初始化+启动脚本+验证)
93 0

相关实验场景

更多