当前课程知识点:大数据系统基础 >  4. 处理框架 >  授课视频 >  4.8Pig Latin

返回《大数据系统基础》慕课在线视频课程列表

4.8Pig Latin在线视频

4.8Pig Latin

下一节:4.9Pig Latin语法

返回《大数据系统基础》慕课在线视频列表

4.8Pig Latin课程教案、知识点、字幕

下面我们来介绍一个比

MapReduce更高层级的抽象

这样一种语言

能够实现任意的数据流的组合

那么这种语言叫做PIG LATIN

也是一个编程语言

也是一种系统

PIG LATIN这个词很有意思

如果大家有兴趣的话

可以到维基百科上查一下

它是一种英语的一种文字游戏

它是把英语的一些词经过变换

然后变换成一些

看起来很奇怪的词

这种语言的名字

就叫PIG LATIN

然后有经验的人

他知道你是怎么变换的

他能够读出PIG LATIN

他能够把它返回成英语的词

但这个系统也是一个比较早的

做数据流的这样一个系统

为了更清晰的讲解这个系统

我们首先看一个例子

从这个例子开始讲起

这是一个真实的例子

就是说我要问一下

我有很多网站的类型

比如说这是新闻类网站

照片共享类网站

体育类网站

那么我想知道每一个类型网站中

用户最常访问页面的前十名

那么我们有什么信息

我们首先有用户访问的信息

就是说谁几点钟访问了哪个网站

我们还有一些网站的信息

就是说哪个网站是什么类型的

它的PageRank

它的网站排名是什么

这是两个不同的输入文件

或者两个不同的表

那么我们怎么知道

在每一个类型的网站里头

哪十个网站

是最容易被用户访问的

那我们显然需要理解

这两个表里的内容

那么大家可以想像

这个用户访问是有无穷途径的

因为用户每秒钟整个Internet上

访问多了去了

那Internet上的Url

也多了去了

所以这两个表都是

超级超级大的两个表

如果大家比较熟悉

这个cnn.com的话

那么我们肯定是要怎么做呢

我们肯定是要join这个Url

我才能知道是哪个网站

然后得到了网站之后

我们再Group by类型

才能知道是什么类的

最后在count这个类型里的

和这个Url里头

到底有多少个用户

这是一种基本的想法

就是你如果用

cnn.com来写的话

但是显然这两个表格

都不是能够放在

一个数据库里头的

所以这个东西

我们真的需要一个

像MapReduce一样的

分布式的系统

在处理这样大的数据

那么逻辑上这件事应该怎么做

显然逻辑上我应该把Visits

这个表格读到内存里头去

然后我来Group by url

我看不同的Url

到底都有谁来访问过

然后我对每一个Url数一数

到底是谁访问了对吧

有多少次访问

我不关心谁

所以我把它generate成一个count

我把它整个组合一下数一下

之后我们再把Url lnfo

Url lnfo里头包含了

这个Url属于哪一类的信息

那么这里头有一个Url的域

这里头有一个Url的域

那么我们把这两个Url的域

join在一起

那么你们得到了每一个Url

有多少个访问

同时我们也知道

这个Url是属于哪个类别的

那么我们想知道每个类别的

前10个Url怎么知道

我们就按照类别

把它组织再一起

这个时候每一类里头所有的Url

以及所有的访问就都在一起了

然后对每一类

我们把所有Url按访问量排个序

那么我们找头10个

那就是头10位这一类里的Url

最常访问的这些网站

所以这个数据流

基本上是这样的

那大家其实可以看得出来

像这个Loar

像这个Group by

Group by实际上就是一个Reduce

然后对每一个Url

产生一个count

大家刚刚学完MapReduce

那么大家的思维

还在MapReduce

所以大家想

这就是一个MapReduce

那么把这个东西读进来

这是一个Map

它要做Join Url

那么就说这是一个Url

这是一个Url

把两个Join在一起

可能说这是一个MapReduce

我要把它变成一个

也是以Url开头的

这么一个结尾

这个也是一个Url的东西

然后我要在这个上面

跑一个MapReduce对吧

然后这个输出结果之后

我必须按category排

按照category排

我要Group by一个category

那么我在category上

再跑一个MapReduce

最后的话

因为category在一起

然后我把这个Url后面的东西

这是一个MapReduce

这整个点

可以跑成一个Reduce

所以它是若干个

MapReduce连接起来的

但是这个MapReduce

连接起来的时候

我们说的时候是太简化了

因为我们没有考虑到

它的数据类型

MapReduce我们要保证

所有的key的数据类型是一致

所以你要把这个来回来去

倒一倒数据类型的排序方法

所以在这种情况下

真正写出来的

MapReduce的代码

实际上是这样的

就是它是若干个MapReduce相叠

结合起来的

它有很多步

然后跑好多个MapReduce的结果

最后能够生成前10个Url

这个东西是非常难写的

而且稍微你的数据结构变一下

这种东西跟着调是很难的

就算写出来了

第二个人也未必看得懂

也很难维护

然后很难跟着这个数据结构的

这种变化而变化

这些代码其实也非常难重用

你不知道这些具体里头都是什么

哪些可以重用那些不可以

再一个就是自动优化

你看这个东西

这层都是用户定义的方程

这种东西是最难用程序来优化的

因此也是Yahoo(雅虎)的一些人

他们就发明了

PIG LATIN这种语言

现在PIG LATIN

他们也把它开源到

Apache(阿帕奇)的项目

所以叫ApachePig

这样的系统

这个系统是一个

更高级的编程语言

它可以更快捷的让用户

建立一个MapReduce的

工作流程来处理

多个MapReduce的工作

它提供了很多类似于数据库

这样的操作定义

比如说Join 比如说Group by

但是跟数据库不一样的是

它也可以支持用户自定义

一些java的函数

这样的话也可以兼容MapReduce

能实现的所有的功能

那么最开始是

Yahoo(雅虎)的研究所

然后Research是开始设计的

这个系统

之后很快Yahoo(雅虎)的人

就都不写MapReduce了

就是各种MapReducejob

大家都用PIG LATIN的

这种语言来写

所以很快就达到50%的

Yahoo(雅虎)的job

都是由这个来写的

然后这个语言

它实际上是自动的翻译成

一系列的MapReducejob

在MapReduce上运行的

现在它也是一个开源的软件

这里有它的网址

所以大家有兴趣的话

可以把它装上试一下

这确实是比直接写

hadoop的MapReduce要方便很多

大数据系统基础课程列表:

1. 绪论

-授课视频

--什么是大数据

--大数据典型应用

--大数据的特点

--大数据技术体系

--大数据生态系统

--大数据技术挑战

--课程内容

-1. 绪论--Quiz 1

2.云计算

-授课视频

--2.1大数据和云计算关系概述

--2.2并行化理念

--2.3规模经济理念

--2.4从仓库规模计算机到云

--2.5云计算商业模式概述

--2.6云计算带来的价值

--2.7云计算的分类

--2.8虚拟化技术概述

--2.9计算虚拟化

--2.10网络虚拟化:基础

--2.11网络虚拟化:软件定义网络

--2.12软件定义网络实现

--2.13存储虚拟化:用户接口

--2.14存储虚拟化:分布式存储实现方式

--2.15虚拟化技术总结

--2.16OPENSTACK

--2.17云计算小结

-2.云计算--Quiz 2

3.文件存储

-授课视频

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

-3.文件存储--Quiz3

4. 处理框架

-授课视频

--4.1大数据的处理框架

--4.2MapReduce编程模型

--MapReduce执行过程

--4.4MapReduce数据流

--4.5MapReduce性能优化与容错

--4.6Hadoop

--4.7MapReduce总结

--4.8Pig Latin

--4.9Pig Latin语法

--4.10Pig Latin 嵌套数据类型

--4.11Pig Latin 实现与优化

--Pig Latin 实现与优化(2)

--4.13类似框架

--4.14章节总结

-4. 处理框架--Quiz4

5.内存计算

-授课视频

--5.1内存计算概述

--5.2并行计算挑战

--5.3并行计算的局限性

--5.4大数据处理并行系统

--5.5内存计算需求

--5.6MapReduce文件传递数据

--5.7内存计算的可行性

--5.8内存层次的延迟

--5.9内存计算实例-spark

--5.10SPARK-RDD

--5.11大数据并行系统

--5.12Spark编程接口

--5.13Spark编程实例——Log挖掘

--5.14Spark编程实例——WorkCount

--5.15Spark实现技术

--5.16复杂的DAG示例

--5.17RDD性能的提高

--5.18Spark应用和生态环境

--5.19Spark的局限性

-5.内存计算--Quiz5

6. NoSQL

-授课视频

--NoSQL与Cassandra

--数据模型、接口、语言

--系统架构与Gossip协议

--一致性哈希与数据分区

--数据副本及一致性

--节点本地数据存储

-6. NoSQL--Quiz6

7. 流计算

-授课视屏

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

-7. 流计算--Quiz7

4.8Pig Latin笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。