大数据处理流水线

大数据处理流水线:一种数据流方法

看完本文,不妨回头看看这些要求都做到了吗:
  • 理解数据流及其在数据科学中扮演的角色
  • 用实例解释‘split-do-merge’,一种大数据流水线
  • 给出‘data parallel’的定义
  • 列举大数据流水线中常见的变换
  • 列举常见聚集函数

流水线概念

大多数大数据应用是由一组陆续执行的操作组成的,这组操作成为流水线。数据沿途经过多种转化,在这些操作间流动。所以要理解大数据处理过程,必须先理解数据流。

考虑另一篇关于MapReduce的文章中的WordCount实例,MapRedcue的过程可以总结如下图:
大数据处理流水线
虽然MapReduce已经代表了一批应用程序,但这还不够,需要再进行抽象,提高一个层次,可以总结出‘split-do-merge’模型。
首先数据被分成若*分,分割后的数据经过一组用户定义的函数来执行一些操作,从统计方法到机器学习,都可以。根据应用程序的数据处理需求,‘do’操作可以不同,也可以组成一条操作链。最后结果会被用一种合并方法进行结合,如Reduce。
上述一组大数据处理过程也称为大数据PipeLine,流水线。Pipe这个词最早出现在UNIX操作系统中,一个程序的输出作为另一个程序的输入。对大数据处理过程而言,在流水线中每一步的并行问题主要就是数据并行问题(data parallelism)。我们可以将数据并行简单地定义为对同一数据集的不同部分同时运行相同的函数。要达到这种数据并行,我们必须决定每步个并行计算的数据粒度,如WordCount中的Map的数据粒度是一行,shuffle and sort的数据粒度是单个键值对。你会发现每一步数据集的大小都减小了。

常见数据变换

变换是改变数据形状的工具。

Map

map是最常见的数据变换,map对数据集中的每一个元素执行一样的操作,如都加1。

Reduce

reduce对具有某种共性的对象总体地执行某种操作,如求和。

Cross/Cartesian

cross就是求笛卡尔积。

Match/Join

match就是数据库中的内连接(inner-join)。
大数据处理流水线

Co-Group

co-group是将两个数据集合成一个数据集,然后将key相同的元素分作一组。
大数据处理流水线

Filter

filter即过滤,相当于数据库中的where,根据一个条件筛选,如X%2==0。

聚集函数

聚集函数把所有相关的数据元素都考虑进来。设X是数据集,将X中的所有数据元素x都考虑进来的变化f称为聚集函数。如求和、分组求和、求平均值、分组求平均值等都是聚合函数。集合操作交并差一定意义上也可以称作聚集函数。聚集函数往往压缩了数据量。