A 问题
1.spark⽀持故障恢复的⽅式? 2.详细说一下hadoop和spark的相同点和不同点? 3.spark如何保证宕机迅速恢复?
A1 spark⽀持故障恢复的⽅式?
主要包括两种⽅式:
- ⼀种是通过⾎缘关系lineage,当发⽣故障的时候通过⾎缘关系,再执⾏⼀遍来⼀层⼀层恢复数据;
- 另⼀种⽅式是通过checkpoint()机制,将数据存储到持久化存储中来恢复数据。
A2 详细说一下hadoop和spark的相同点和不同点?
- Hadoop底层使⽤MapReduce计算架构,只有map和reduce两种操作,表达能⼒⽐较⽋缺,⽽且在MR过程中会重复的读写 hdfs,造成⼤量的磁盘io读写操作,所以适合⾼时延环境下批处理计算的应⽤;
- Spark是基于内存的分布式计算架构,提供更加丰富的数据集操作类型,主要分成转化操作和⾏动操作,包括 map、reduce、filter、flatmap、groupbykey、reducebykey、union和join等,数据分析更加快速,所以适合低时延环境下计算的应 ⽤;
- spark与hadoop最⼤的区别在于迭代式计算模型。基于mapreduce框架的Hadoop主要分为map和reduce两个阶段,两个阶段 完了就结束了,所以在⼀个job⾥⾯能做的处理很有限;spark计算模型是基于内存的迭代式计算模型,可以分为n个阶段,根据 ⽤户编写的RDD算⼦和程序,在处理完⼀个阶段后可以继续往下处理很多个阶段,⽽不只是两个阶段。所以spark相较于 mapreduce,计算模型更加灵活,可以提供更强⼤的功能。
- 但是spark也有劣势,由于spark基于内存进⾏计算,虽然开发容易,但是真正⾯对⼤数据的时候,在没有进⾏调优的轻局 昂下,可能会出现各种各样的问题,⽐如OOM内存溢出等情况,导致spark程序可能⽆法运⾏起来,⽽mapreduce虽然运⾏缓慢,但是⾄少可以慢慢运⾏完。
A3 spark如何保证宕机迅速恢复?
- 适当增加spark standby master
- 编写shell脚本,定期检测master状态,出现宕机后对master进⾏重启操作
B sql
B1
代码语言:javascript复制select
m.movie,
tbl.cate
from
movie_info m
lateral view
explode(split(category, ",")) tbl as cate;
B2
方法一:
代码语言:javascript复制select
t1.base,
concat_ws('|', collect_set(t1.name)) name
from
(select
name,
concat(constellation, ",", blood_type) base
from
person_info) t1
group by
t1.base;
方法二: