大数据(8d)RDD原理
Posted 小基基o_O
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据(8d)RDD原理相关的知识,希望对你有一定的参考价值。
概述
- 全称:Resilient Distributed Dataset
- 译名:弹性分布式数据集
特性
- 存储弹性:数据可在内存和磁盘间切换
- 分区弹性:可重新分区
- 支持并行计算;支持分布式
- RDD血缘:记录各RRD间关系,支持数据丢失恢复和计算出错重试
- RDD类是个抽象类(源码见
abstract class RDD
),具体方法需要子类实现 - RDD封装了计算逻辑,并不存储实际数据
- 不变:只能产生新的RDD(Scala用
val
)
代码原理图
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
// 创建配置
val conf: SparkConf = new SparkConf().setAppName("a1").setMaster("local[*]")
// 创建文本处理对象
val sc = new SparkContext(conf)
// 读数据(并行化)
val rdd0: RDD[String] = sc.parallelize(List("cat dog", "cat cow", "cow pig"))
// 分词并平坦化
val rdd1: RDD[String] = rdd0.flatMap(_.split(" "))
// 每个词
val rdd2: RDD[(String, Int)] = rdd1.map((_, 1))
// 对相同的key进行reduce操作
val rdd3: RDD[(String, Int)] = rdd2.reduceByKey(_ + _)
以上是关于大数据(8d)RDD原理的主要内容,如果未能解决你的问题,请参考以下文章