您的位置:首页 > 大数据

大数据算子(spark)

2014-02-21 09:23 295 查看
    传统SQL理论依托于关系代数,而关系代数又是本质由关系运算的算子构成,复杂的关系查询也是由这些算子组合而成,弄懂算子也就弄好了基础。同样的原理也是由01的位运算可以构建出+-*/等基本运算一样,像搭积木一样的底层构建高层运算。

    猜想大数据可能也是这样通过spark的RDD的基础运算函数应该就是基本的算子,总结如下。

     本质上又可以分成三类 (一)所有元素全可以并行的运算像map(2)归并型子集合内单机,子集合间并行最后合并结果(3)整体无法并行的运算(此种基本不存在单机型基本在第二类的子集合内进行了单机的运算)

    1 并行每个元素函数运算型 map,foreach(相当于没有返回值的map),mappartitions(每个分区内进行map,物理分治的map,flatmap(map+flat集合合并压平)

    2 key分组型 map

    3 key分组子集合运算型,reduce(相当于groupby后再map),groupby,groupbykey

    4 分组拆分合并为大集合型 为(2的逆运算)flatmap(scala 中的 flatten)

    5 采样型 :filter(自定义采样函数),top(topk 排序采样),takesample(随机采样),sample 和采样相反的是scala中的丢弃型操作 drop dropwhile像

    6 合并型 union (set型合并,同类型合并),zip(映射型合并,set,set合并为k-v pair的类型)fold操作(在每个partition中进行关联函数流水线?)

    8 流水线型操作 pipe ,scala中的foldleft和foldright(在遍历集合的同时将结果传递下去继续使用而进行运算 此种也是相当于在子集合中失去了并行化的可能)

    9 关系运算型 cartesian (笛卡尔积)substract (差集运算) distinct(去重)  (而 shark 就相当于在spark上扩充了一层关系运算和关系存储的元存储,相当于这些运算的层级要低于关系运算可以构建关系运算,同样层级低于图运算graphx中的图运算)

 10 聚集函数

大类 (1) 1每个元素型  (2) 分治集合和子集合合并型的正反操作(2,3,4) (3)采样型(减少)和合并型(增多)的正逆操作型 (4)高层算子关系代数(5)聚集函数   (6)流水线型运算
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: