一:RDD (Resilient Distributed Dataset) 分布式弹性数据集。是Spark中最基本的数据抽象。代码中式一个抽象类,代表一个不可变,可分区,里面的元素可并行计算的集合。
数据来源分布
数据集 数据集合
其实是逻辑抽象 计算抽象
不可变:参考String.里面的数据不可改变 变得也是新产生的数据
可分区:
移动数据不如移动计算
算子就是方法line.flatMap(_.split(" "))
line.flatMap(_.split(" "))
def flatMap[U: ClassTag](f: T => TraversableOnce[U]): RDD[U] = withScope {
val cleanF = sc.clean(f)
new MapPartitionsRDD[U, T](this, (context, pid, iter) => iter.flatMap(cleanF))
}
RDD与InputStream区别
同是父类
刚开始都不读数据 只有触发read或者collect时才触发操作
都是装饰者模式
RDD是一步步在数据处理的逻辑进行封装
封装的逻辑都是自己写的小括号里面的代码
一算子分类
1.转换算子 转换结构line.flatMap(_.split(" ")) word.map(x=>(x,1))
2.行动算子 collect
首先位置
节点本地化
机架本地化
二。RDD转换
Value类型
Key-Value类型