大数据规整-12-pig处理大规模数据的高级查询语言

1 简介

用于描述数据流的语言,称为Pig Latin。用于执行Pig Latin程序的执行环境,当前有两个环境:单JVM中的本地执行环境和Hadoop集群上的分布式执行环境。

Pig内部,每个操作或变换是对输入进行数据处理,然后产生输出结果,这些变换操作被转换成一系列MapReduce作业,Pig让程序员不需要知道这些转换具体是如何进行的,这样工程师可以将精力集中在数据上,而非执行的细节上。

2 下载安装

安装包下载地址:http://pig.apache.org/releases.html。
在这里插入图片描述
#tar -xzvf pig-0.17.0.tar.gz -C /usr/local/
#cd /usr/local/
#mv pig-0.17.0/ pig
#vi /root/.bashrc

export PIG_HOME=/usr/local/pig
export PATH=$PATH:$PIG_HOME/bin

#source /root/.bashrc
#pig -help
#pig -version【0.17.0】
#hadoop version【2.8.5】
#pig -x local设置执行模式
grunt>
grunt> quit退出

3 执行类型

3.1 local模式

Grunt是Pig的外壳程序(shell)。本地模式下,Pig运行在单个JVM中,访问本地文件系统,该模式用于测试或处理小规模数据集。
#pig -x local
grunt>
grunt> quit
例如,把linux下的/etc/passwd文件的第一列提取出来输出。
#head -n 5 /etc/passwd

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

#pig -x local -brief

Connecting to hadoop file system at: file:///
[表示本地文件系统]

使用

grunt> A = load '/etc/passwd' using PigStorage(':');注意空格不可少
grunt> B = foreach A generate $0 as id;注意空格不可少
grunt> dump B;注意空格不可少

3.2 MapReduce模式

在没有安装hadoop的情况下运行这个指令,会报错。
ERROR 4010: Cannot find hadoop configurations in classpath (neither hadoop-site.xml nor core-site.xml was found in the classpath). If you plan to use local mode, please put -x local option in command line。
Pig根据HADOOP_HOME环境变量来寻找并运行对应的Hadoop客户端。
#cat /root/.bashrc

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export HADOOP_CLASSPATH=/usr/local/hadoop/share/hadoop/common/lib

#pig -brief

Connecting to hadoop file system at: hdfs://pda1:9000

(1)启动hadoop集群
#start-dfs.sh
#start-yarn.sh
#mr-jobhistory-daemon.sh start historyserver注意一定要运行此行
(2)文件上传到集群中
#hdfs dfs -ls /
#hdfs dfs -put /etc/passwd /
(3)进入Pig shell,运行,以’:‘分隔提取A,把A的第一列放入B,dump打出B。
#pig -x mapreduce -brief
grunt> A = load ‘/passwd’ using PigStorage(’:’);
grunt> B = foreach A generate $0 as id;
grunt> dump B;
(4)关闭集群
#mr-jobhistory-daemon.sh stop historyserver
#stop-yarn.sh
#stop-dfs.sh

猜你喜欢

转载自blog.csdn.net/qq_20466211/article/details/112675623