
最近有群友私聊小编,说面试了很多家,面试题大同小异,但是回答的不够理想。




1、 字节、阿里、拼多多、中移杭研、海亮等:Hive做过哪些实际优化?必须结合实际项目来谈,结合我实际离线数仓里做的优化?
本人回答: 1.小文件的优化(解决方法是combineHiveinput、merge、jvm重用等) 2.数据倾斜的优化: 2.1分组聚合导致的数据倾斜要map-side在map端预聚合,或者打开set hive.groupby.skewindata=true;启动两个mr,第一个MR按照随机数分区,将数据分散发送到Reduce,完成部分聚合,第二个MR按照分组字段分区,完成最终聚合。 2.2 join产生的数据倾斜,null值能过滤的就过滤,不能过滤的就key加随机数;大小表join使用使用map join;大表和大表join,可以分桶或者启用set hive.optimize.skewjoin=true;或者大表加随机数打散,然后扩容小表。 面试官追问: 1. 阿里:上面的回答都是理论上的,有没有实际中的hive的优化,高级一点的?(阿里面试官不要配置参数开关这种优化,听他的意思是有些sql类型的优化,或者其它生产中的优化) 2. 字节:你说的分组聚合的数据倾斜,利用map-side在map端预聚合,但是如果倾斜的key分布比较散乱在不同的mapTask上,每个mapTask预聚合的条数有限,预聚合后还是有大量倾斜的key要做shuffle怎么办?你这样map-side效果也不明显啊? 3. hive的优化中不要讲那些count(distinct by),数据倾斜等等这些,讲一讲实际生产中到底用过哪些优化? |
1.1字节(上海):
1 、sparkSql跑得特別慢,怎么分析原因?(我讲了数据倾斜,explain查询引擎等,面试官很不满意) 2、离线项目中你做的亮点(这题很多家都问频繁挂)? |
2、字节、阿里:两张大表要做join,一张是产入表,一张是产出表,各自都是一亿行左右,而且里面都有热点key(join的时候会数据倾斜),你怎么解决?
我:可以先进行采样,确定热点key,把两种表热点key对应的数据单独where过滤出来进行mapJoin,其他没有产生热点的数据继续走common join。 面试官:如果产生倾斜的热点key很多呢?你都要采样一个一个把这些过滤出来再join吗? 我:可以启用set hive.optimize.skewjoin=true,会自动扫描超过100000行的倾斜key数据,把他们做map-join,其他没有产生倾斜的key会进行common join 面试官:(面试官不太满意,回答手动打散大表扩容小表也不满意。。)把这些产生数据倾斜的key单独拎出来做join,为什么就是map-join?如果不是map-join,这些产生数据倾斜的key做join不还是在一个task里面会产生数据倾斜吗? |
3、字节问如何统一指标口径?阿里问如何统一口径?(这题是最惨的,面试官问完就对我印象很不好)
我:我们初期公司指标混乱,各业务部门出人梳理所有指标。将指标拆成原子指标,将派生指标拆成=原子指标+统计周期+统计粒度+业务限定,以后业务方需要的指标,都必须先在我们开发的web系统上检索有没有现成的指标,有的话看看指标的定义是不是符合业务方需求的;如果没有的话,就要看埋点数据有没有,没有埋点数据就要新增埋点,有了埋点数据的话,就得在web平台上提需求,新增指标,评审,数据平台和数仓负责人都通过,该指标才能开发并添加上线web系统,给业务方用 字节:你怎么强迫大家都遵守web平台的规则呢? 阿里:你这个是说怎么建立的指标体系吧?我是问你怎么统一口径的?还有你这套web指标系统到底是服务数仓的同事还是服务业务方产品方的? 。。。。这个问题百度了很久,没有查到,看您b站上面的视频好像有这个题目,但是视频内容讲的是hive的 |
4、阿里、喜马拉雅:flink遇到过哪些高级点的生产问题?把解决问题的过程说出来?
我:flink cdc1.x经常启动报错,全表扫描时锁业务库表;Flink sql 中left join会产生撤回流,导致重复数据;flink的数据倾斜,flink的背压。。。 阿里:有没有遇到高级一点的?或者全链路的也行。。。 。。。。这个问题又没有答出来。。。 |
5、flink数据积压怎么办?(我说增大kafka的并行度,面试官问还有吗?我说不会了,他不太满意)
6、阿里、字节:离线数仓和实时数仓的下游业务有哪些?报表是给谁看的?用户画像从你们数仓里取哪些数?实时指标怎么检测对不对?和业务方怎么打交道的?指标都是谁提的?你们数仓自己没有提指标吗?
我:离线数仓下游有报表和用户画像;实时数仓下游是实时报表和推荐系统;报表给用户画像和推荐的同事看,还有老板看; 实时指标的质量监控,不会,每天离线指标会覆盖实时指标一次; 很少和业务方打交道,他们提指标我们开发; 我们数仓很少自己提指标 |
7、数据质量怎么监控的?这题问得很深,接下来还问数据治理
我: 数据质量监控我们有web系统,底层调用python+shell,shell中写sql做以下监控:单表数据量监控、单表空值检测、单表重复值检测、单表值域检测、跨表数据量对比等。 数据治理:这个回答得不好,因为我说得是表健康度=计算健康度打分+存储健康度打分+合规健康度打分等加权。面试官说你这些都是打分,有没有实际一点的? |
8、三一集团:
8.1 flink更改并行度后重启重新打包提交,程序却起不来遇到过没?面试官提示了一下,是checkpoint没有感知到并行度的改变。。。(还是没有回答出来) 8.2 假如flume积压,如何加快消费(我回答是增大flume内存和增加多台flume机器、节点等,面试官说不对,就单个flume的话怎么办,提示说flume只能按照文件读吗?依然想不通) 8.3拉链表耗费性能(拉链表每次都要和最新分区9999-12-31中的数据join),有什么办法提高拉链表性能吗? 8.4数仓建模自己独有的经验谈谈?你做过离线和实时那么久应该有自己的经验吧? 8.5谈谈你认为的流批一体?(我回答flink的API目前是支持流批一体,面试官问还有吗?) 8.6元数据的管理(不要说atlas,一说到atlas面试官就说不要聊了) |
9、聚水潭二面
9.1 kafka的某些并行度上积压了数据,消费策略会如何?
9.2如何判断哪些指标适合实时,哪些指标适合离线?
9.3 flink的miniBatch还可以用来做什么?除了攒批做聚合以外?
10、美团
10.1 OLAP随机按照维度分组聚合遇到过吗?比如dws层宽表中的维度不能满足这些即席查询的需求,怎么办?我回答说是可以从dwd明细层取数,再关联维度层dim,但是面试官不太满意 10.2 你说你在离线数仓当中做了一些升级,除了引入了Maxwell做一些增量表的同步以外,你还做了哪些工作?(这题好多家面试都问过) |
11、阿里健康
如何评价数仓建模的好坏?面试官见我沉默不语,提示说比如你的同事做了数仓建模,你怎么评价他建得好不好呢?
12、万能wifi
12.1我讲了一下我的离线数仓架构:Mysql会同步全量表和增量表到ods层,全量表每日Datax同步一次到维度层dim,增量表用Maxwell实时同步到dwd层。 面试官立刻追问:你的事实表的数据是当日实时来的,但是维度表的数据还是前一日全量同步来的,那么事实表就拿不到维度表的当日数据啊,维度的数据就不是最新的啊,你怎么解决的? 12.2 hive离线数仓脚本跑报错了,怎么排查?我说看日志+血缘关系,他说日志怎么显示?怎么看是哪些计算过程哪些字段产生的报错?后面是重新跑,从哪里开始跑? |
13、拼多多、美团
13.1 flink每次重启需要多久?重启的这段时间,实时数仓的下游(业务方)消费不到数据怎么办?(沒回答出來) 13.2 flink数据积压怎么办?(我说增大kafka的并行度,面试官问还有吗?我说不会了,他不太满意) 13.3数据倾斜产生的原因?解决方案?(这题美团也问到,面试官追问要实际的生产方案,不要网上的八股文) |
14、中移杭研
14.1你们ck应该有设置表数据失效时间(ttl)吧?有没有遇到过clickhouse 的ttl失效这类问题?比如说已经失效的数据过了一个月又出来了?我说没有遇到过呀。他说不对,你是ck的21.9版本吗?我说是的,但是确实没有遇到过。。。(面试官对我开始不信任了) 14.2 clickhouse的重分区partition问题(这题我就没懂他在说什么) |
15、阿里、字节等几乎所有大厂非常关心数仓下游的应用,我回答说离线下游有报表和用户画像,实时有推荐系统,面试官会深问和下游方的关系,和业务方怎么打交道的?
总结:面试问最多的
sparkSql跑得特別慢,怎么分析原因?(我讲了数据倾斜,explain查询引擎等,面试官很不满意)
离线项目中你做的亮点?
就是离线数仓和实时数仓中,你做的是哪些工作?
负责哪些主题或者数据域?
离线数仓和实时数仓实际解决过哪些问题(高级点的问题)?
Hive实际做过哪些优化?Flink实际做过的哪些优化?
数据倾斜你在生产中碰到的是哪种场景,生产里是如何解决的,不要网上的那种理论知识?口径如何统一?
数据质量监控和元数据管理也是经常问的,数据质量监控(回答单表数据量监控、单表空值检测、单表重复值检测、单表值域检测、跨表数据量对比这些不够),元数据管理回答atlas也不行,面试官问得非常细。
数仓下游产品线有哪些?字节会问日常怎么和这些业务方打交道?
指标都是谁提的?他们为什么要提这些指标?
埋点具体是怎么埋点的?我不是问你埋点的类型,我是问你如何设置这些埋点的,怎么选择在哪里埋点的?有哪些埋点?和谁配合的?
拼多多、阿里:gmv下降了20%如何排查原因?
以上是群友提供的面试总结,大家可以参考一下,查漏补缺!