spark概念强化

27次阅读

共计 984 个字符,预计需要花费 3 分钟才能阅读完成。

概念

Transformation

 用来从存在的 rdd 产生新 rdd。rdd 图系,成为 rdd 操作图或者 rdd 依赖图。是逻辑执行计划,有向无循环图 DAG,Transformation 是懒惰执行,当执行 Action 时才被执行。

分类

 根据 RDD 转换前后数据集大小变化来分类:不变:map()
    变大:flatMap(), union(), Cartesian()
    变小:filter, count, distinct, sample
    
根据被用来计算的元素是否存在于父 RDD 的一个分区中来分类:Narrow transformation:
        窄转换,被用来计算的元素存在于父 RDD 的一个分区中。举例:map(), filter(),sample(),union()
    Wide transformation:广泛转换,被用来计算的元素存在于父 RDD 的多个分区中。举例:groupbyKey(),join(), reducebyKey()

Action

acton 和真实的数据集打交道。action 的值存到 drivers 或者外部存储系统。action 让 rdd 从懒执行到真移动。action 会产生非 RDD 结果值。

辨析

map() VS flatmap()

 相同:接收 RDD 的一行作为输入,在行上执行 function

区别:map 一个输入对应一个输出。可以用来输出每一行的长度。faltmap 一个输入可能对应多个输出。经常用来拆分单词

map() VS mapPartitions()

 相同: 都可以实现给出一个函数,去映射 RDD 中所有元素的效果。区别:可编程的细粒度有区别
    map 对一个元素进行编程。mapPartitions 对一个分区进行编程。比如当用到外部数据库
    连接时常用,一个分区使用一个连接,而不是每一个元素使用一
    个连接。

mapPartitions() VS mapPartitionsWithIndex()

 区别:mapPartitionsWithIndex 另外有一个表示分区下标编号参数。

reduce() VS fold()

 相同:都有两个元素作为输入,产生的与元素相同类型的输出。区别:reduce 多了一个初始化的输入。reduce 空集合抛出异常,fold 可以兼容空集合。

数量

 分区数,任务数,CPU 核心数。这些数量的设置跟程序调优息息相关。

参考

Spark RDD Operations-Transformation & Action with Example

正文完
 0