pigserver java_pig安装配置及实例

一、前提

1、 hadoop集群环境配置好(本人hadoop版本:hadoop-2.7.3)

2、 windows基础环境准备:

jdk环境配置、esclipse环境配置

二、搭建pig环境

1、下载pig:

在Apache下载最新的Pig软件包,点击下载会推荐最快的镜像站点,以下为下载地址:http://mirror.bit.edu.cn/apache/pig/

a98479d0071e377e54c5e0b529bc24d9.png

2、上传pig(我的是上传到/opt/bigdata下面)

9b45174feffba0791112359a727d4161.png

3、解压缩

[hadoop@wangmaster sbin]$ cd /opt/bigdata/[hadoop@wangmaster bigdata]$lsdocs hadoop-2.7.3.tar.gz hbase-1.2.5-bin.tar.gz jdk1.8.tar.gz opt pig-0.17.0 zookeeper-3.4.10hadoop-2.7.3 hbase-1.2.5 jdk1.8 maxtemperaurte.jar output pig-0.17.0.tar.gz zookeeper-3.4.10.tar.gz

[hadoop@wangmaster bigdata]$tar -xzvf pig-0.17.0

4、设置环境变量

sudo vi /etc/profile

##设置pig的class路径和在path加入pig的路径,其中PIG_CLASSPATH参数是设置pig在MapReduce工作模式:

export PIG_HOME=/opt/bigdata/pig-0.17.0export PATH=$PATH: /opt/bigdata/hadoop-2.7.3/bin:$PIG_HOME/bin

##确认生效

source/etc/profile

5、验证安装完成

重新登录终端,确保hadoop集群启动,键入pig命令,应该能看到pig连接到hadoop集群的信息并且进入了grunt shell命令行模式:

如果需要退出的话,在pig的grunt shell下键入quit即可。

30b37086ff29648fa517dfff85ca83ed.png

三、实例

如果在启动hadoop集群时候start-all.sh里面没有包含mapreduce.jobhistory.address这一项?那么进行手动启动。

./mr-jobhistory-daemon.sh start historyserver (在hadoop路径下sbin下执行)

实例要求:这里我们给出一个学生表(学号,姓名,性别,年龄,所在系),其中含有如下几条记录并保存在/opt/bigdata/ziliao/student.txt文件:

201000101:Lihua:men:20:CST201000102:Wangli:women:19:CST201000103:Xiangming:women:18:CAT201000104:Lixiao:men:19:CST201000105:Wuda:women:19:CA201000106:Huake:men:21:CST201000107:Beihang:men:20:CA201000108:Bob:women:17:CAT201000109:Smith:men:19:CAT201000110:Gxl:men:19:CST201000111:Songwei:women:19:CA201000112:Weihua:men:21:CAT201000113:Weilei:women:18:CA201000114:Luozheng:men:19:CA201000115:Shangsi:women:20:CAT201000116:Fandong:men:19:CST201000117:Laosh:women:22:CAT201000118:Haha:men:19:CA

它们所对应的数据类型如下所示:

Student(sno:chararray, sname:chararray, ssex:chararray, sage:int,

sdept:chararray)

我们将在不同的运行方式下取出各个学生的姓名和年龄两个字段,执行结果如下:

(Lihua,20)

(Wangli,19)

(Xiangming,18)

(Lixiao,19)

(Wuda,19)

(Huake,21)

(Beihang,20)

(Bob,17)

(Smith,19)

(Gxl,19)

(Songwei,19)

(Weihua,21)

(Weilei,18)

(Luozheng,19)

(Shangsi,20)

(Fandong,19)

(Laosh,22)

(Haha,19)

1、local模式

进入grunt shell模式

[hadoop@wangmaster sbin]$ pig -x local--加载数据(注意“=”左右两边要空格)

grunt> A = load '/opt/bigdata/ziliao/student.txt' using PigStorage(':') as (sno:chararray, sname:chararray, ssex:chararray, sage:int, sdept:chararray);--从A中选出Student相应的字段(注意“=”左右两边要空格)

grunt> B =foreach A generate sname, sage;--将B中的内容输出到屏幕上

grunt> dump B;

809f875eeadf721ce30a6e72f2a31985.png

--将B的内容输出到本地文件中

grunt> store B into '/opt/bigdata/ziliao/result.txt';--查看本地文件内容,没有''grunt> cat /opt/bigdata/ziliao/result.txt;

(上面另一种执行方式—脚本文件)将下面语句存储到script.pig中(script.pig文件内容如下)

A = load '/opt/bigdata/ziliao/student.txt' using PigStorage(':') as (sno:chararray, sname:chararray, ssex:chararray, sage:int, sdept:chararray);

B=foreach A generate sname, sage;

dump B;

store B into'/opt/bigdata/ziliao/result1.txt';

执行pig -x local script.pig命令

查看结果:grunt> cat /opt/bigdata/ziliao/result.txt;

2、 MapReduce模式

首先将/opt/bigdata/ziliao/student.txt放到hadoop的in目录下

hadoop dfs-put /opt/bigdata/ziliao/student.txt /in输入pig,进入shell编辑模式下

grunt> ls /inhdfs://wangmaster:9000/docs 104

hdfs://wangmaster:9000/hbase

hdfs://wangmaster:9000/input

hdfs://wangmaster:9000/output

hdfs://wangmaster:9000/student.txt 525

hdfs://wangmaster:9000/tmp

hdfs://wangmaster:9000/wang

然后对其进行操作

输入目录变为hdfs://wangmaster:9000/in/student.txt

输出目录变为hdfs://wangmaster:9000/in/result.txt

(注意:脚本也是如此)。

A = load 'hdfs://wangmaster:9000/student.txt' using PigStorage(':') as (sno:chararray, sname:chararray, ssex:chararray, sage:int, sdept:chararray);

B=foreach A generate sname, sage;

dump B;

store B into'hdfs://wangmaster:9000/result0.txt'

cat hdfs://wangmaster:9000/result0.txt;

第二例:求每个专业的最大的年龄人的相关信息:(数据还是上面的)

执行(在shell里面执行):

A = load '/opt/bigdata/ziliao/student.txt' using PigStorage(':') as (sno:chararray, sname:chararray, ssex:chararray, sage:int, sdept:chararray);

B=group A by sdept;

dump B;

max_age=foreach B generate group,MAX(A.sage);

dump=max_age;

输出结果:

(CA,20)

(CAT,22)

(CST,21)

查找目标信息

CA= filter A by sdept == 'CA' and sage == 20; (CA专业的最大年龄人的信息)

CAT0= filter A by sdept == 'CAT' and sage == 22; (不可用标识词)(CAT专业的最大年龄人的信息)

CST= filter A by sdept == 'CST' and sage == 21; (CST专业的最大年龄人的信息)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值