网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
以古人的话共勉:
道阻且长,行则将至;行而不辍,未来可期!
本栏目大数据开发岗高频面试题主要出自
大数据技术
专栏的各个小专栏,由于个别笔记上传太早,排版杂乱,后面会进行原文美化、增加。
文章目录
停🤚
不要往下滑了,
默默想5min,
看看这5道面试题你都会吗?
面试题01、数据源中的数据分布不均匀,Spark需要频繁交互?
面试题02、数据集中的不同Key由于分区方式,导致数据倾斜?
面试题03、JOIN操作中,一个数据集中的数据分布不均匀,另一个数据集较小(主要)?
面试题04、聚合操作中,数据集中的数据分布不均匀(主要)?
面试题05、JOIN操作中,两个数据集都比较大,其中只有几个Key的数据分布不均匀?
以下答案仅供参考:
面试题 01、 数据源中的数据分布不均匀,Spark需要频繁交互?
解决方案:避免数据源的数据倾斜 实现原理:通过在Hive中对倾斜的数据进行预处理,以及在进行kafka数据分发时尽量进行平均分配。这种方案从根源上解决了数据倾斜,彻底避免了在Spark中执行shuffle类算子,那么肯定就不会有数据倾斜的问题了。 方案优点:实现起来简单便捷,效果还非常好,完全规避掉了数据倾斜,Spark作业的性能会大幅度提升。 方案缺点:治标不治本,Hive或者Kafka中还是会发生数据倾斜。 适用情况:在一些Java系统与Spark结合使用的项目中,会出现Java代码频繁调用Spark作业的场景,而且对Spark作业的执行性能要求很高,就比较适合使用这种方案。将数据倾斜提前到上游的Hive ETL,每天仅执行一次,只有那一次是比较慢的,而之后每次Java调用Spark作业时,执行速度都会很快,能够提供更好的用户体验。 总结:前台的Java系统和Spark有很频繁的交互,这个时候如果Spark能够在最短的时间内处理数据,往往会给前端有非常好的体验。这个时候可以将数据倾斜的问题抛给数据源端,在数据源端进行数据倾斜的处理。但是这种方案没有真正的处理数据倾斜问题。
面试题02、数据集中的不同Key由于分区方式,导致数据倾斜?
解决方案1:调整并行度 实现原理:增加shuffle read task的数量,可以让原本分配给一个task的多个key分配给多个task,从而让每个task处理比原来更少的数据。 方案优点:实现起来比较简单,可以有效缓解和减轻数据倾斜的影响。 方案缺点:只是缓解了数据倾斜而已,没有彻底根除问题,根据实践经验来看,其效果有限。 实践经验:该方案通常无法彻底解决数据倾斜,因为如果出现一些极端情况,比如某个key对应的数据量有100万,那么无论你的task数量增加到多少,都无法处理。
总结:调整并行度:适合于有大量key由于分区算法或者分区数的问题,将key进行了不均匀分区,可以通过调大或者调小分区数来试试是否有效
解决方案2: 缓解数据倾斜(自定义Partitioner) 适用场景:大量不同的Key被分配到了相同的Task造成该Task数据量过大。 解决方案:使用自定义的Partitioner实现类代替默认的HashPartitioner,尽量将所有不同的Key均匀分配到不同的Task中。 优势:不影响原有的并行度设计。如果改变并行度,后续Stage的并行度也会默认改变,可能会影响后续Stage。 劣势:适用场景有限,只能将不同Key分散开,对于同一Key对应数据集非常大的场景不适用。效果与调整并行度类似,只能缓解数据倾斜而不能完全消除数据倾斜。而且需要根据数据特点自定义专用的Partitioner,不够灵活。
面试题03、JOIN操作中,一个数据集中的数据分布不均匀,另一个数据集较小(主要)?
解决方案:Reduce side Join转变为Map side Join 方案适用场景:在对RDD使用join类操作,或者是在Spark SQL中使用join语句时,而且join操作中的一个RDD或表的数据量比较小(比如几百M),比较适用此方案。 方案实现原理:普通的join是会走shuffle过程的,而一旦shuffle,就相当于会将相同key的数据拉取到一个shuffle read task中再进行join,此时就是reduce join。但是如果一个RDD是比较小的,则可以采用广播小RDD全量数据+map算子来实现与join同样的效果,也就是map join,此时就不会发生shuffle操作,也就不会发生数据倾斜。 方案优点:对join操作导致的数据倾斜,效果非常好,因为根本就不会发生shuffle,也就根本不会发生数据倾斜。 方案缺点:适用场景较少,因为这个方案只适用于一个大表和一个小表的情况。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
并且后续会持续更新**