Spark概要掌握情况自我核查

1、Spark目前只持哪哪种语言的API?

Java, Scala, Python, R. Ref: http://spark.apache.org/

2、RDD执行transformation和执行action的区别是什么?

1,transformation是得到一个新的RDD,方式很多,比如从数据源生成一个新的RDD,从RDD生成一个新的RDD 2,action是得到一个值,或者一个结果(直接将RDDcache到内存中) 所有的transformation都是采用的懒策略,就是如果只是将transformation提交是不会执行计算的,计算只有在action被提交的时候才被触发。

从运行层面来看,Transformation实际上是一种链式的逻辑Action,记录了RDD演变的过程。Action则是实质触发Transformation开始计算的动作,由于在每个Transformation的过程中都有记录,所以每个RDD是知道上一个RDD是怎样转变为当前状态的,所以如果出错就可以很容易的重新演绎计算过程。 Reference:

  1. http://blog.csdn.net/map_lixiupeng/article/details/41958561
  2. http://www.dataguru.cn/thread-588091-1-1.html
  3. http://my.oschina.net/hanzhankang/blog/200275

3、RDD cache默认的StorageLevel级别是什么?

val MEMORY_ONLY = new StorageLevel(false, true, true)!

缓存策略 class StorageLevel private(! private var useDisk_ : Boolean,! private var useMemory_ : Boolean,! private var deserialized_ : Boolean,! private var replication_ : Int = 1)! ! ! val NONE = new StorageLevel(false, false, false)! val DISK_ONLY = new StorageLevel(true, false, false)! val DISK_ONLY_2 = new StorageLevel(true, false, false, 2)!

val MEMORY_ONLY_2 = new StorageLevel(false, true, true, 2)! val MEMORY_ONLY_SER = new StorageLevel(false, true, false)! val MEMORY_ONLY_SER_2 = new StorageLevel(false, true, false, 2)! val MEMORY_AND_DISK = new StorageLevel(true, true, true)! val MEMORY_AND_DISK_2 = new StorageLevel(true, true, true, 2)! val MEMORY_AND_DISK_SER = new StorageLevel(true, true, false)! val MEMORY_AND_DISK_SER_2 = new StorageLevel(true, true, false, 2)

4、说明narrow dependency 和 wide dependency的区别? 从计算和容错两方面说明!

摘要: narrow dependency和wide dependency的区别,从计算和容错方面说明

根据不同的transformation操作,RDD的依赖可以分为窄依赖 (Narrow Dependency)和宽依赖(Wide Dependency,在代码中为ShuffleDependency)两种类型。 窄依赖指的是生成的RDD中每个partition只依赖于父RDD(s)固定的partition。 宽依赖指的是生成的RDD的每一个partition都依赖于父 RDD(s)所有partition。 窄依赖典型的操作有map, filter, union(特殊)等 宽依赖典型的操作有groupByKey, sortByKey等。

窄依赖的第一个作用,我的理解是可以不用等上一次操作全部做完,每完成一条记录就可以进行下次操作,如map产生一条新纪录马上就做filter 那么对于宽依赖,不能顺序执行,比如groupByKey操作。它需要等所有的计算map,filter都做完,才能做ByKey的计算。另外,union这个必须要重点提一下。这个操作只能说不一定,记住:不一定。为什么这么说呢。。因为如果你的计算非常少,最后只有一个DAG在计算,那它就是narrow。。。如果是多个DAG,那此时必然是wide,必然要做shuffle。 可以看到,宽依赖往往意味着shuffle操作,这也是Spark划分stage(任务集)的主要边界。对于窄依赖,Spark会将其尽量划 分在同一个stage中,因为它们可以进行流水线计算。 计算方面:

上图详细解释一下Spark中的Stage划分。我们从HDFS中读入数据生成3个不同的RDD,通过一系列 transformation操作后再将计算结果保存回HDFS。可以看到这幅DAG中只有join操作是一个宽依赖,Spark内核会以此为边界将其前 后划分成不同的Stage. 同时我们可以注意到,在图中Stage2中,从map到union都是窄依赖,这两步操作可以形成一个流水线操作,通过map操作生成的 partition可以不用等待整个RDD计算结束,而是继续进行union操作,这样大大提高了计算的效率。 而Hadoop的MapReduce更像是宽依赖,所以Spark引入了窄依赖大大提高了计算速度。 容错方面: narrow dependencies的失败恢复更有效,因为它只需要重新计算丢失的parent partition即可,而且可以并行地在不同节点进行重计算。而wide dependencies牵涉到RDD各级的多个Parent Partitions。

Reference:

  1. http://www.dataguru.cn/article-6585-1.html
  2. http://www.flybi.net/question/14203
  3. http://www.cnblogs.com/davidwang456/p/5135884.html

5、下载搜狗实验室用户查询日志精简版:http://www.sogou.com/labs/dl/q.html

(63M),做以下查询: ① ⽤户在00:00:00到12:00:00之间的查询数? ② 搜索结果排名第一,但是点击次序排在第二的数据有多少?

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏行者悟空

Spark RDD的Shuffle

1883
来自专栏王小雷

Spark学习之基础相关组件(1)

Spark学习之基础相关组件(1) 1. Spark是一个用来实现快速而通用的集群计算的平台。 2. Spark的一个主要特点是能够在内存中进行计算,因而更快。...

2088
来自专栏遊俠扎彪

Windiows桌面文件不能拖动以改变位置

2008-10-01 据说出现这种情况的解决方法是按几下ESC键就行了,我试了一下还挺灵。 百度知道解决方案位置:http://zhidao.baidu.com...

2089
来自专栏大数据学习笔记

Spark2.x学习笔记:11、RDD依赖关系与stage划分

11、 RDD依赖关系与stage划分 Spark中RDD的高效与DAG图有着莫大的关系,在DAG调度中需要对计算过程划分stage,而划分依据就是RDD之间的...

2795
来自专栏伦少的博客

Spark 持久化(cache和persist的区别)

4604
来自专栏Albert陈凯

3.5RDD的容错机制

3.5 RDD的容错机制 RDD实现了基于Lineage的容错机制。RDD的转换关系,构成了compute chain,可以把这个compute chain认...

2908
来自专栏牛肉圆粉不加葱

[Spark Q&A]如果中间输出RDD在内存放不下会怎么样?

这个问题其实问的 RDD 缓存机制。我们可以调用 persist() 或 cache()方法来缓存 RDD。Spark 的缓存是具有容错性的,如果 RDD 的任...

902
来自专栏about云

让你真正明白spark streaming

spark streaming介绍 Spark streaming是Spark核心API的一个扩展,它对实时流式数据的处理具有可扩展性、高吞吐量、可容错性等...

3547
来自专栏王小雷

MapReduce的编程思想(1)

MapReduce的编程思想(1) MapReduce的过程(2) 1. MapReduce采用分而治之的思想,将数据处理拆分为主要的Map(映射)与Reduc...

1946
来自专栏大数据架构

Adaptive Execution 让 Spark SQL 更高效更智能

前面《Spark SQL / Catalyst 内部原理 与 RBO》与《Spark SQL 性能优化再进一步 CBO 基于代价的优化》介绍的优化,从查询本身与...

1171

扫码关注云+社区

领取腾讯云代金券