解析:
序列化可以减少数据的体积,减少存储空间,⾼效存储和传输数据,不好的是使⽤的时候要反序列化,⾮常消耗CPU
解析:
答:join其实常⻅的就分为两类: map-side join 和 reduce-side join。当⼤表和⼩表join时,⽤map-side join能显著提⾼效率。将多份数据进⾏关联是数据处理过
程中⾮常普遍的⽤法,不过在分布式计算系统中,这个问题往往会变的⾮常⿇烦,因为框架提供的 join 操作⼀般会将所有数据根据 key 发送到所有的 reduce 分
区中去,也就是 shuffle 的过程。造成⼤量的⽹络以及磁盘IO消耗,运⾏效率极其低下,这个过程⼀般被称为 reduce-side-join。如果其中有张表较⼩的话,我们
则可以⾃⼰实现在 map 端实现数据关联,跳过⼤量数据进⾏ shuffle 的过程,运⾏时间得到⼤量缩短,根据不同数据可能会有⼏倍到数⼗倍的性能提升。
备注:这个题⽬⾯试中⾮常⾮常⼤概率⻅到,务必搜索相关资料掌握,这⾥抛砖引⽟。
介绍⼀下cogroup rdd实现原理,你在什么场景下⽤过这个rdd?
解析:
答:cogroup的函数实现:这个实现根据两个要进⾏合并的两个RDD操作,⽣成⼀个CoGroupedRDD的实例,这个RDD的返回结果是把相同的key中两个RDD分别进
⾏合并操作,最后返回的RDD的value是⼀个Pair的实例,这个实例包含两个Iterable的值,第⼀个值表⽰的是RDD1中相同KEY的值,第⼆个值表⽰的是RDD2中相同
key的值.由于做cogroup的操作,需要通过partitioner进⾏重新分区的操作,因此,执⾏这个流程时,需要执⾏⼀次shuffle的操作(如果要进⾏合并的两个RDD的都已经是
shuffle后的rdd,同时他们对应的partitioner相同时,就不需要执⾏shuffle,),
场景:表关联查询
30 下⾯这段代码输出结果是什么?
--------------------------
def joinRdd(sc:SparkContext) {
val name= Array(
www.aboutyun.com/thread-24246-1-1.html 16/57
2019/4/24 spark相关的⾯试题跟答案,带着问题学习效果更佳哟。?)-⾯试区-about云开发
Tuple2(1,"spark"),
Tuple2(2,"tachyon"),
Tuple2(3,"hadoop")
)
val score= Array(
Tuple2(1,100),
Tuple2(2,90),
Tuple2(3,80)
)
val namerdd=sc.parallelize(name);
val scorerdd=sc.parallelize(score);
val result = namerdd.join(scorerdd);
result .collect.foreach(println);
}
--------------------------
答案:
(1,(Spark,100))
(2,(tachyon,90))
(3,(hadoop,80))
---------------------------------------------------------------------------------------------------------------------
【Spark⾯试2000题71-100】Spark core⾯试篇03
www.aboutyun.com/thread-24246-1-1.html 17/57
2019/4/24 spark相关的⾯试题跟答案,带着问题学习效果更佳哟。?)-⾯试区-about云开发
Spark Core是Spark的基⽯,有很多知识点,⾯试题集的知识点⽐较跳跃和分散,建议系统学习了Spark知识再看⾯试题集。今天继续放送最新整理和设计的《Spark⾯试2000题》题集,仅
供参考学习。本篇博⽂属于梅峰⾕原创,转载请注明出处,如果您觉得对您有帮助,请不要吝啬点赞,你的赞,是志愿者们坚持的动⼒,是早⽇做出2000道⾼质量Spark⾯试题的动⼒,如
有不准确的地⽅,请留⾔说明。
⼀、⾯试30题(第71-100题)
Spark使⽤parquet⽂件存储格式能带来哪些好处?
解析:
1) 如果说HDFS 是⼤数据时代分布式⽂件系统⾸选标准,那么parquet则是整个⼤数据时代⽂件存储格式实时⾸选标准
2) 速度更快:从使⽤spark sql操作普通⽂件CSV和parquet⽂件速度对⽐上看,绝⼤多数情况
会⽐使⽤csv等普通⽂件速度提升10倍左右,在⼀些普通⽂件系统⽆法在spark上成功运⾏的情况
下,使⽤parquet很多时候可以成功运⾏
3) parquet的压缩技术⾮常稳定出⾊,在spark sql中对压缩技术的处理可能⽆法正常的完成⼯作
(例如会导致lost task,lost executor)但是此时如果使⽤parquet就可以正常的完成
4) 极⼤的减少磁盘I/o,通常情况下能够减少75%的存储空间,由此可以极⼤的减少spark sql处理
数据的时候的数据输⼊内容,尤其是在spark1.6x中有个下推过滤器在⼀些情况下可以极⼤的
减少磁盘的IO和内存的占⽤,(下推过滤器)
5) spark 1.6x parquet⽅式极⼤的提升了扫描的吞吐量,极⼤提⾼了数据的查找速度spark1.6和spark1.5x相⽐⽽⾔,提升了⼤约1倍的速度,在spark1.6X中,操作parquet时候cpu也进⾏了极
⼤的优化,有效的降低了cpu
6) 采⽤parquet可以极⼤的优化spark的调度和执⾏。我们测试spark如果⽤parquet可以有效的减少stage的执⾏消耗,同时可以优化执⾏路径