解析:
1)累加器在全局唯⼀的,只增不减,记录全局集群的唯⼀状态
2)在exe中修改它,在driver读取
3)executor级别共享的,⼴播变量是task级别的共享
两个application不可以共享累加器,但是同⼀个app不同的job可以共享
解析:
为了提⾼效率,要划分划分,划分的范围并且是有序的
要么有序,要么降序?
⽔塘抽样:⽬的是从⼀个集合中选取,集合⾮常答,适合内存
www.aboutyun.com/thread-24246-1-1.html 18/57
2019/4/24 spark相关的⾯试题跟答案,带着问题学习效果更佳哟。?)-⾯试区-about云开发
⽆法容纳数据的时候使⽤
从N中抽取出K个,N是随机数
spark hashParitioner的弊端是什么?
解析:
答:HashPartitioner分区的原理很简单,对于给定的key,计算其hashCode,并除于分区的个数取余,如果余数⼩于0,则⽤余数+分区的个数,最后返回的值就是这个key所属的分区ID;弊
端是数据不均匀,容易导致数据倾斜,极端情况下某⼏个分区会拥有rdd的所有数据
解析:
答:RangePartitioner分区则尽量保证每个分区中数据量的均匀,⽽且分区与分区之间是有序的,也就是说⼀个分区中的元素肯定都是⽐另⼀个分区内的元素⼩或者⼤;但是分区内的元素是
不能保证顺序的。简单的说就是将⼀定范围内的数映射到某⼀个分区内。其原理是⽔塘抽样。可以参考这篇博⽂
https://www.iteblog.com/archives/1522.html
解析:
答:1)hdfs中的block是分布式存储的最⼩单元,等分,可设置冗余,这样设计有⼀部分磁盘空间的浪费,但是整⻬的block⼤⼩,便于快速找到、读取对应的内容;2)Spark中的partion是
弹性分布式数据集RDD的最⼩单元,RDD是由分布在各个节点上的partion组成的。partion是指的spark在计算过程中,⽣成的数据在计算空间内最⼩单元,同⼀份数据(RDD)的partion⼤
⼩不⼀,数量不定,是根据application⾥的算⼦和最初读⼊的数据分块数量决定;3)block位于存储空间、partion位于计算空间,block的⼤⼩是固定的、partion⼤⼩是不固定的,是从2个不
同的⻆度去看数据。