Coursera课程Big Data Analysis with Scala and Spark Week 1笔记

本文是Coursera课程'Big Data Analysis with Scala and Spark'第一周的学习笔记,主要探讨Spark的高性能原因、RDD的概念及操作,包括Transformation和Action的区别,以及Spark性能评估和作业执行原理。
摘要由CSDN通过智能技术生成

Coursera上的spark课程笔记。

spark为什么快

把尽可能多的不可变数据存到内存里,记录对数据的一系列操作。如果某个节点出现问题,重新执行一遍操作即可还原结果,无需太多的磁盘操作。

这就是它的容错思路。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

RDD

大数据的hello world程序:word count

val rdd = spark.textFile("hdfs://...")
val count = rdd.flatMap(line => line.split(" "))
				.map(word => (word, 1))
				.reduceByKey(_ + _)

创建RDD的方式

  1. 从已有的RDD转换;
  2. 从SparkContext或SparkSession对象创建;

SparkContext或SparkSession是程序与spark集群交互的入口,最常用的创建RDD的方式是:

  1. parallelize: 从一个普通的Scala Collections创建RDD;往往在真正项目中不会用到,因为这需要已有一个很大的集合对象;
  2. textFile: 从HDFS或本地文件系统读取文本文件,得到一个String类型的RDD;项目中最常用的方式。

RDD的Transformation 和 Action 操作

对比Scala中序列和并行collection中的transformersaccessors

transformers: 返回一个新的collection;
accessors: 整合所有结果返回单独的值,如reduce, fold, aggregate等操作。

  • Transformation:返回新的RDD,lazy,并不立即计算;
  • Action:基于RDD计算出结果,要么直接返回,要么存起来,eager,立即计算。

Laziness / eagerness ,是Spark处理延时的策略。

在这里插入图片描述

val lastYearsLogs: RDD[String] = ...
val firstLogsWithErrors = lastYearsLogs.filter(_.contains("ERROR")).take(10)

当取够10个元素时,就停止filter操作了。真聪明!

在这里插入图片描述
还有更牛的,如上图中,有一个map操作和一个count操作,spark在执行map的时候就顺便count了!只需一次遍历!

例子:

//这三行下来其实啥都没做,得到的只是对一个并不存在的RDD的引用
val largeList : List[String] = ...
val wordsRdd = sc.parallelize(largeList)
val lengthsRdd = wordsRdd.map(_.length)

//必须加上action操作才真正开始执行
val totalChars = lengthsRdd.reduce(_+_)
常用Transformation

map: 一一映射;
flatmap: 先 map, 然后再将 map 出来的这些列表首尾相接 (flatten);
filter:过滤;
dictinct:去重

常用Actions

collect: 返回RDD中所有元素;
count: 返回RDD元素个数;
take(num: Int): Array[T]:返回RDD中前num个元素;
reduce:
foreach:

看返回类型,就能区分Transformation和Actions。

Spark性能评估

每次reduce操作都会触发之前stage的所有transformations操作,重

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值