Apache Pig 学习笔记

1.Pig安装web

目前最新稳定版为pig-0.12.1,下载解压到/opt/tools/目录下。
shell

因为pig是基于hadoop的上层应用,因此须要先部署好hadoop集群。对于hadoop-0.23.0以上的版本,pig虽然也已经支持,可是须要从新编译pig,否则执行dump命令时会报错显示版本不兼容。数据库

从新编译pig也很简单,只需一条命令便可,在$pig_home/目录下,即/opt/tools/pig-0.12.1/ 下输入:apache

ant -Dhadoopversion=23

若提示ant命令没法找到,直接去apache官网下载ant,解压到/opt/tools/apache-ant-1.9.3vim

cd到pig目录,执行oop

/opt/tools/apache-ant-1.9.3/bin/ant -Dhadoopversion=23

编译可能会好久,可是慢慢等吧,最后显示successful就表示ok了,而后重命名文件学习

mv pig.jar pig-0.12.1.jar
mv pig-withouthadoop.jar pig-0.12.1-withouthadoop.jar

接下来配置环境变量 vim /etc/profile
spa

export PIG_HOME=/opt/tools/pig-0.12.1
export PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$PIG_HOME/bin:$PATH

保存退出,执行下列命令使之生效
命令行

source /etc/profile


2.Pig学习概要调试

2.1 执行方式


交互式shell(命令行)
脚本文件(建议以.pig做为扩展名)
本地模式
pig -x local
pig -x local log.pig
Mapreduce模式
pig -x mapreduce (或 pig)
pig -x mapreduce log.pig(或 pig log.pig)

2.2 执行Pig Latin的通常操做以下:

  • LOAD : 从文件系统hdfs读取数据

  • 一系列声明(如GROUP,FOREACH,FILTER等)进行数据操做

  • 最后DUMP打印输入结果或者STORE存储数据到hdfs

2.3 调试Pig Latin

  • DUMP (or \d):输出结果到终端

  • DESCRIBE (or \de):查看一个关系的结构

  • EXPLAIN (or \e):查看一个关系的逻辑结构,物理机构和map reduce执行计划

  • ILLUSTRATE (or \i):查看声明语句的每一步执行状况

2.4 大小写问题

  • 字段名,关系名,和方法名,如PigStorage,COUNT等,是大小写敏感的。

  • 关键字,如LOAD,USING,AS,GROUP,BY,FOREACH,GENERATE,DUMP,STORE等不区分大小写

2.5 数据类型

Complex Types:

  • 关系(relations):一个关系就是一个包,确切的说是一个外包(outer bag),例如A。至关于数据库中的表。

A = LOAD 'student' USING PigStorage() AS (name:chararray, age:int, gpa:float);
DUMP A;
(John,18,4.0F)
(Mary,19,3.8F)
(Bill,20,3.9F)
(Joe,18,3.8F)

  • 包(bags):一个包是一系列元祖的集合

    外包:

B = LOAD 'data' as (f1:int, f2:int, f3;int);
DUMP B;
(1,2,3)
(4,2,1)
(8,3,4)
(4,3,3)

        内包:

X = GROUP C BY f1;
DUMP X;
(1,{(1,2,3)})
(4,{(4,2,1),(4,3,3)})
(8,{(8,3,4)})


  • 元祖(tuples):一个元祖是一系列有序字段的集合

(John,18,4.0F)

  • 映射(map):映射是一系列键值对的集合

[name#John,phone#5551212]

  • 字段(fields):一个字段就是一个数据

        字段能够经过名字或者位置来肯定,如上面例子A,第一列name能够用$0表示,第二例age能够用$1表示。

Simple Types:

  • int:32bit,如10

  • long:64bit,如10l或10L

  • float:32bit,如10.5F

  • double:64bit,如10.5

  • chararray:UTF-8格式,如hello world

  • bytearray:Byte array (blob)

  • boolean:true/false(or TRUE/FALSE)

  • datetime:1970-01-01T00:00:00.000+00:00

  • biginteger:200000000000

  • bigdecimal:33.456783321323441233442

2.6 Pig Latin中的Nulls

本文将持续更新!!!

相关文章
相关标签/搜索