Spark一千篇旅游日记0003 之 RDD入门

学习参考书籍《spark核心技术与高级应用》

RDD翻译为弹性分布式计算,在spark中所有的计算都依赖于RDD.

一. 例如:

import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by fly on 2017/5/10.
  */
object testRDD {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("test")
    conf.set("spark.testing.memory", "2147480000")
    val sc = new SparkContext(conf)


    val lines = sc.textFile("E:/spark-2.1.1-bin-hadoop2.6/README.md")
    val linesLengths = lines.map(s => s.length)
    //持久化操作
    linesLengths.persist()
    val totalLength = linesLengths.reduce((a,b) => a+b)
    println("=========================================")
    println(totalLength)
    val maxLength = linesLengths.reduce((a,b) => if (a>b) a else b)
    println("=========================================")
    println(maxLength)
  }
}

计算结果:
这里写图片描述

一个简单任务执行过程:
这里写图片描述

整个任务执行全过程

这里写图片描述

RDD简单理解就是数据的集合,只不过这个数据集合是弹性分布式的.

二. RDD概念:

1.RDD的特征:
1) 分区: RDD数据集是可以被切分成一片一片,然后分布在集群中,可以由不同机器进行并行计算.
2) 函数: 我的理解就是可以对RDD进行计算的函数,例如: 读取函数sc.textFile,遍历函数lines.map等等
3) 依赖: RDD数据集totalLength,依赖于RDD数据集linesLengths ,linesLengths 依赖于lines
4) 优先位置: 每个RDD分片优先计算位置,例如:A机器上的数据,A机器优先计算,而不是让B去计算A上的数据.
5) 分区策略: 常用的HashPartitioner

2.RDD依赖分类:
1) 左侧为窄依赖
2) 右侧为宽依赖
这里写图片描述

3.常用的转换(Transformations)操作:
1) 基础转换操作
map filter flatMap mapPartitions mapPartitionsWithIndex sample union intersection distinct cartesian pipe coalesce repatition
2) 值转换操作
groupByKey reduceByKey sortByKey join cogroup

4.常见的执行(Action)操作:
1) 常见的执行操作:
reduce collect count first take(n) takeSample(withReplacement,num,seed) takeOrdered(n,[ordering]) countByKey foreach(func)
2) 存储执行操作:
saveAsTextFile(path) saveAsSequenceFile(path) saveAsObjectFile(path)

5.控制操作:
控制操作中:
Cache/Pesist是惰性的,延迟到Action才执行;
而Unpesist是即时的,会立即释放内存;
checkpoint会直接将RDD持久化到磁盘或HDFS等路径,不同于Cache/Persist的是,checkpiont的RDD不会因为Job的结束而被消除,会一直存在,并可以被后序的作业直接读取,并加载.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值