Download presentation
Presentation is loading. Please wait.
1
Cloud Computing 数据处理平台-Pig
2
主要内容 简介 Pig的基本框架 Pig Latin编程语言 Pig的使用
3
简介 Pig是一个用来处理大规模数据集的平台,和Google的 Sawzall类似,由Yahoo!贡献给Apache。
MapReduce的查询框架虽然主要是Map和Reduce两个函 数,但是用户从编写程序到在集群中部署、运行,仍然要 花费不少时间。 Pig可以简化MapReduce任务的开发,提高在Hadoop集 群上进行数据处理的方便程度。
4
Pig的基本框架 Pig的基本框架 Pig Latin MapReduce Cluster
5
Pig的基本框架 Pig Latin:Pig专用的语言,是类似于SQL的面向 数据流的语言。能够对数据进行排序、过滤、求和、 分组、关联等功能。 MapReduce:当需要处理海量数据时,先用Pig Latin语 言编写Pig Latin程序,然后在Pig中执行 Pig Latin程序。 Pig把用户编写的Pig Latin程序编译成MapReduce作业, 上传到集群中运行。
6
Pig Latin编程语言 M R MapReduce虽然是现在处理海量数据的主要方法,但是 对于数据处理它仍然存在不足之处。
固定的数据流处理过程 其他操作需要用户自己动手编写 Join, filter, projection, aggregates, sorting, distinct 语义被隐藏在map和reduce函数中,使其难以维护、扩展或者被 优化 M R
7
Pig Latin编程语言 Pig Latin则能很好的解决上述问题。它是一种类SQL的面 向数据流的语言。它提供了对数据的排序、过滤、分组、 求和、关联等功能,同时也运行用户自定义一些函数,称 为UDF(user-defined functions)。 与编写MapReduce程序相比,Pig Latin程序可以大大减 少代码量。Pig可以自动对集群进行分配和回收,并且自 动的对MapReduce程序进行优化,用户可以将精力放在 程序功能的实现上。
8
Pig Latin编程语言 数据模型 Field:存放一个原子的数据。
Tuple:Field的序列,其中的每一个Field可以是任何一种数据类 型 Bag:Tuple的集合,每个Tuple可以包含不同数目不同类型的 Field。如下图 Map:一组键值对的组合,一个关系中的键值对必须唯一。 Pig Latin 的数据模型是可以嵌套的 (‘lucy’, ‘1234’) (‘jack’, (‘iPod’, ‘apple’))
9
Pig Latin编程语言 数据类型 类型 说明 示例 int 有符号的32位整数 127 long 有符号的64位整数 127L
float 32位浮点数 3.14F double 64位浮点数 3.14 chararray UTF-8格式的字符数组 Hello World bytearray Byte数组
10
Pig Latin编程语言 运算符 算术运算符 操作 符号 说明 相加 + 相减 - 相乘 * 相除 / 取模 %
对整型有效(int, long) Bincond ?: 条件?成立时的值;不成立时的值
11
Pig Latin编程语言 运算符 Bicond运算符举例
grunt>A = LOAD ‘data.txt’ AS (f1:int, f2:int, B:bag{T:tuple(t1:int, t2:int)}); grunt>DUMP A; (3, 2, {(1, 7), (3, 5)}) (3, 3, {(1, 7), (3, 5)}) (3, 5, {(1, 7,), (3, 5), (4, 6)}) 执行下面的操作: grunt>X = FOREACH A GENERATE f2, (f2 == 2 ? 1 : COUNT(B)); grunt>DUMP X; (2, 1) (3, 2L) (5, 3L)
12
Pig Latin编程语言 运算符 比较运算符 操作 符号 说明 相等 == 不等 != 小于 < 大于 > 小于或等于
<= 大于或等于 >= 模式匹配 matches Matches左边是表达式,右边是字符串常量
13
Pig Latin编程语言 常用操作 操作名称 功能 LOAD 载入待处理的数据 FOREACH 逐行处理Tuple FILTER
DUMP 将结果打印到屏幕 STORE 将结果保存到文件
14
Pig Latin编程语言 Visits Url Info 实例分析:在每个category中找到最访问的10个页面 Amy cnn.com
User Url Time Amy cnn.com 8:00 bbc.com 10:00 flickr.com 10:05 Fred 12:00 Url Category PageRank cnn.com News 0.9 bbc.com 0.8 flickr.com Photos 0.7 espn.com Sports
15
Pig Latin编程语言 Load Visits Group by url Foreach url Load Url Info
generate count Load Url Info Join on url Group by category Foreach category generate top10 urls
16
Pig Latin编程语言 Pig Latin实现
visits = load ‘/data/visits’ as (user, url, time); gVisits = group visits by url; visitCounts = foreach gVisits generate url, count(visits); urlInfo = load ‘/data/urlInfo’ as (url, category, pRank); visitCounts = join visitCounts by url, urlInfo by url; gCategories = group visitCounts by category; topUrls = foreach gCategories generate top(visitCounts,10); store topUrls into ‘/data/topUrls’;
17
Pig Latin编程语言 MapReduce作业 每个group或者join操作都形 成一个map-reduce的界限 Map1
Load Visits Group by url Reduce1 Map2 Foreach url generate count Load Url Info Join on url Reduce2 Map3 Group by category Reduce3 Foreach category generate top10(urls)
18
Pig的使用 Pig有两种工作模式 本地模式:所有的文件和执行过程都在本机进行,本地模式可以在 短时间内处理少量数据。
MapReduce模式:所有的文件和执行过程都是基于Hadoop的。 它也是Pig的默认模式。 每种模式的配置可参考
19
Pig的使用 Pig本地模式和MapReduce模式都有三种运行方式,分别 为:Grunt shell方式,脚本方式和嵌入式方式。
Grunt shell:用户可以在Grunt shell里输入Pig Latin语句和Pig 命令 脚本方式:脚本方式本质上是Grunt shell方式命令的集合,用脚 本文件存储命令序列。Pig脚本通常以.pig为后缀。 嵌入式方式:Pig命令可以嵌入到其他语言中运行。和普通的Java 程序一样,需要先编写特定的Java程序,在Java中嵌入Pig命令代 码,然后编译成对应的class文件,最后调用main函数运行该程序。
20
Pig的使用 Pig的调试 Pig提供了许多命令帮助程序员调试跟踪程序,这些命令包括: DESCRIBE, DUMP, EXPLAIN, ILLUSTRATE等。例如: DESCRIBE命令的作用是返回一个关系的结构 EXPLAIN命令的作用是显示脚本的执行计划 ILLUSTRATE命令的作用是跟踪程序的执行过程
Similar presentations