Pig安装讲解

Pig 简介:

Pig 是 Apache 项目的一个子项目,Pig 提供了一个支持大规模数据分析的平台,Pig 突出的特点就是它的结构经得起大量并行任务的检验,使得它能够处理大规模数据集

Pig  特点:

Pig 可简化 MapReduce 任务的开发

Pig 可以看做 Hadoop 的客户端软件,可以连接到 Hadoop 集群进行数据分析工作

Pig 方便不熟悉 Java 的用户,使用一种较为简便的类似 SQL 的面向数据流的语言 PigLatin 语言进行数据处理

PigLatin 可以进行排序,过滤,求和,分组,关联等常用操作,还可以自定义函数,这是面向数据分析处理的轻量级脚本语言

Pig 可以看做是 PigLatin 到 MapReduce 的映射器

当Pig在MapReduce模式运行时,它将访问一个Hadoop集群和HDFS的安装位置。这时Pig将自动地对这个集群进行分配和回收

Pig 的数据模式: relation(关系), bag(包), tuple(元组), field(字段,列)

relation(关系):具有相同字段(列)的 tuple 称为关系

bag(包):与关系型数据库中的表类似,包含多个 tuple,

tuple(元组):相当于关系型数据库中的行,与关系型数据库不同的是,tuple 不要求每一行具有相同的结构

field(字段,列):与关系型数据库中的列相似,不同的是,field 中可以嵌套表,而关系型 数据库中的列中不可以嵌套表

Pig 的安装和配置:

安装: 解压安装包并添加环境变量即可

tar -zxvf pig-0.17.0.tar.gz -C ~/app

vim  ~/.bash_profix

PIG_HOME= PIG_HOME=/app/pig-0.17.0

export  PIG_HOME

PATH=$PIG_HOME/bin:$PATH

export  PATH

Pig 有两种运行模式:本地模式: 操作 Linux 文件

启动方式: pig  -x   local

集群模式: 链接到 HDFS

PIG_CLASSPATH=/app/hadoop-2.7.3/etc/hadoop

export  PIG_CLASSPATH

启动命令: pig

Pig 操作 Linux 命令:

sh  后面跟linux 命令可以直接对 linux 中的文件进行操作

ls    cd   cat   mkdir    pwd  操作 HDFS

copyFromLocal    从linux 系统 copy 文件到  HDFS

copyToLocal        从 HDFS copy 文件到 linux 系统

register   define        使用 Pig 自定义函数

PigLatin 语句:

---> 需要使用 Hadoop 的 HistoryServer

mr-jobhistory-daemon.sh  start  historyserver

地址: http://192.168.10.100:19888/jobhistory

---> 常用的 PigLatin 语句

load                        加载数据到 bag (表)

foreach                   相当于循环, 对 bag 每一条数据遍历

filter                        相当于 where

group  by                分组

join                          连接

generate                  提取列

union/intersect        集合运算

输出:dump            直接打印到屏幕上

·                      store             输出到 HDFS 上

举例: 7654,MARTIN,SALESMAN,7698,1981/9/28,1250,1400,30

加载员工数据到bag(表)

emp = load  '/input/table/emp.csv'  using  PigStorage(',')

as   (empno:int, ename:chararray, job:chararray, mgr:int, hiredate:chararray,  sal:int,  comm:int,  deptno:int );

dept = load '/scott/dept.csv' using PigStorage(',') as(deptno:int,dname:chararray,loc:chararray);

查看表结构: describe   emp;

查询员工信息:员工号, 姓名, 薪水

SQL语句: select  empno, ename, sal  from   emp ;

PL 语句: emp = foreach  emp  generate  empno,  ename,  sal;

输出到屏幕上: dump  emp;

查询员工信息,按照月薪排序:

SQL 语句:select  *  from  emp  order  by  sal ;

PL 语句:emp = order  emp  by  sal ;

分组:求每个部门工资最高值

SQL语句: select   deptno,  max(sql)   from  emp  group  by  deptno ;

PL 语句:需要分两部

1.  分组

emp_group = group  emp  by  deptno ;

2. 求每个部门最大值

max_sal = foreach  emp_group  generate  group, MAX(emp.sal)

查询 10 号部门的员工:

SQL 语句: select  *  from  emp  where  deptno = 10 ;

PL 语句: deptno_10  = filter  emp  by  deptno==10 ;

多表查询:员工姓名, 部门名称

SQL 语句: select  e.ename  d.dname  from  emp  e,  dept  d  where  e.ename=d.dname;

PL 语句: 分两部实现

1. 将两个表中的两个字段提取出来放入一张表中

newtable = join dept by deptno,  emp  by  ename

2. 遍历提取出来的表,将 员工表的员工姓名, 部门表的部门名称提取出来

table = foreach  newtable  generate  dept:: dname,  emp:: ename

集合运算: 关系型数据库 Oracle : 参与集合运算的各个集合必须列数相同且类型一致

查询 10  号  和 20  号部门的员工

SQL 语句:  select  *  from emp  where  deptno=10

union  select  *  from emp  where  deptno=20;

PL 语句:emp10 = filter  emp  by  deptno==10;

emp20 = filter  dept  by  deptno==20;

emp10_20 = union  emp10,  emp20;

使用PL实现WordCount:

① 加载数据

mydata = load '/data/data.txt' as (line:chararray);

② 将字符串分割成单词

words = foreach mydata generate flatten(TOKENIZE(line)) as word;

③ 对单词进行分组

grpd = group words by word;

④ 统计每组中单词数量

cntd = foreach grpd generate group,COUNT(words);

⑤ 打印结果

dump cntd;

原文地址:http://blog.51cto.com/songqinglong/2059515

时间: 2024-08-08 09:41:53

Pig安装讲解的相关文章

Pig安装及简单使用(pig版本0.13.0,Hadoop版本2.5.0)

原文地址:http://www.linuxidc.com/Linux/2014-03/99055.htm 我们用MapReduce进行数据分析.当业务比较复杂的时候,使用MapReduce将会是一个很复杂的事情,比如你需要对数据进行很多预处理或转换,以便能够适应MapReduce的处理模式,另一方面,编写MapReduce程序,发布及运行作业都将是一个比较耗时的事情. Pig的出现很好的弥补了这一不足.Pig能够让你专心于数据及业务本身,而不是纠结于数据的格式转换以及MapReduce程序的编写

Pig安装与配置

---------------------------------- 一.前言 二.环境 三.配置 1.本地模式 2.MapReduce模式 四.测试 ---------------------------------- 一.前言 Pig是一个用来处理大规模数据集的平台,和Google的Sawzall类似,由Yahoo!贡献给Apache.MapReduce的查询矿街虽然主要是Map和Reduce两个函数,但是用户从编程写程序到在集群中部署.运行,仍然要花费不少时间.使用Pig可以简化MapRe

Pig安装及本地模式实战

Pig是Apache的一个开源项目,用于简化MapReduce的开发,实质Pig将转化为MapReduce作业,使开发人员更多专注数据而不是执行的本质,是不懂java人员的福利. Pig由以下两部分组成: 1.表达数据流的语言,成为Pig Latin. 2.运行Pig Latin程序的执行环境.目前有两种环境:在单个JVM本地执行和在HADOOP集群上分步执行 废话不多说,实战起来: 和Apache其他项目一样,安装Pig都很简单,在/etc/profile文件中设置环境变量. #set pig

Hadoop之Pig安装

Pig可以看做是Hadoop的客户端软件,使用Pig Latin语言可以实现排序.过滤.求和.分组等操作. Pig的安装步骤: 一.去Pig的官方网站下载.http://pig.apache.org/releases.html#14+April%2C+2014%3A+release+0.12.1+available 这里我选择的是14 October, 2013: release 0.12.0 available 这个版本.将pig-0.12.0.tar.gz 下载到本地中. 二.将Pig放在了

shell-网上lnmp一键安装讲解

shell-网上lnmp一键安装讲解 #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin       #设置系统环境变量本文出处:www.ksharpdabu.info export PATH     # # Check if user is root if [ $(id -u) != "0" ]; then                           #通过判断

Alex 的 Hadoop 菜鸟教程: 第16课 Pig 安装使用教程

声明 本文基于Centos 6.x + CDH 5.x Pig 有什么用 hdfs虽说是一个文件空间,但是我们每次要查看hdfs上的文件的时候都要输入一大串命令,比如一个简单的ls都需要输入 : hdfs dfs -ls / ,而且还不能cd到某个目录,这样就造成了每次ls都要带上全路径的麻烦,能不能有一个工具可以模拟linux下的shell呢?Pig就实现了这样的需求,可以直接ls,可以cd到某个目录,比如这样 grunt> ls hdfs://mycluster/user/root/.sta

Pig安装

环境: hadoop-2.4.1.jdk1.6.0_45.pig-0.12.1 1.下载pig并解压 tar -xzvf pig-0.12.1.tar.gz 2.设置环境变量 export PIG_HOME=~/pig-0.12.1 export PATH=$PATH:$PIG_HOME/bin 3.测试 pig -help 4.说明 1)同一个pig支持多个hadoop版本 2)pig默认通过HADOOP_HOME确定hadoop的版本及安装位置,如果没有HADOOP_HOME环境变量,则pi

HA集群之Heartbeat v1 高可用安装讲解

什么是高可用集群        高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引起服务中断.从这个定义可以看出,集群必须检测节点和服务何时失效,何时恢复为可用.这个任务通常由一组被称为"心跳"的代码完成.在Linux-HA里这个功能由一个叫做heartbeat的程序完成. Heartbeat简介        Heartbeat是Linux-H

大数据之pig安装

1.下载 http://apache.fayea.com/pig/pig-0.14.0/ 2. 解压安装