spark
-
reduceByKey和groupByKey的区别
- reduceByKey可以自定义函数,groupByKey不可以自定义函数
- reduceByKey可以在shuffle之前将输出数据与一个共用的
key
结合,先在本地进行merge操作,减少了很多不必要的数据进行数据传输造成的IO - reduceByKey更适合大数据上的操作
2. spark和hadoop的区别
3. hive中的mapjoin原理
hive中join的方式有两种MapJoin和ReduceJoin(shuffle join 或者),
- mapJoin在map阶段进行数据的join,这样可以减少在shuffle阶段进行join时,大量数据的网络传输,起到优化的作用; 比较适用于大表和小表的关联的时候;底层原理使用了broadcast join 将小表复制到所有的map作业中。
- 实现方法:客户端增加需要拷贝的小文件:DistributedCache.addCacheFile();map类中set方法使用DistributedCache.getLocalCacheFiles()获取小文件的路径,并进行文件的拷贝,拷贝到各个TaskTracker的本地磁盘上
- Hive v0.7之后的版本已经不需要给出MapJoin的指示就进行优化。set hive.auto.convert.join=true;hive.mapjoin.smalltable.filesize=25000000这个参数用于指定了对于小表定义的阈值
- ReduceJoin在reduce阶段进行数据的join
4. 拉链表解决的问题和实现
5.rank() over、dense_rank() over、row_number() over的使用区别
6.数据倾斜怎么处理?
现象:大多数task都执行完了,少数执行需要很长时间;程序直接报OM。数据分到每个task上不均匀,经常发生与shuffle的时候,比如:join,distinct,groupbyKey等
原因:数据本身问题:1.key本身分布不均匀;2.key设置不合理;spark使用的问题:1.shuffle并发度不够;2.算子使用不合理
解决方案:
1.数据聚合放到hive端去做,
7.spark提交之后的流程
yarn的基本原理
https://zhuanlan.zhihu.com/p/62164594
8.纬度表和事实表