分为以下几个方面:
一、啥是大数据技能?
二、为啥有面试官会问这类?
三、是否需要掌握?需要掌握多少?
四、如何复习准备?
五、高频面试题?
一
啥是大数据技能?
话不多说,直接看图。
部分公司的jd中会写上一句 “有Hadoop开发经验优先”、“有一定HIVE SQL的性能优化经验优先”。
直白总结,数据分析师,顾名思义,与数据有关。
因此,和数据分析师有关的大数据技能,即和数据上中下游相关的一些技能。
例如:上游的数据日志清洗,中游的数据提取、性能优化,下游的应用层建模等等。
二
为啥会考核?
并不一定是所有公司都会针对此技能考核。
取决于公司规模、团队归属部门及职能,以及部分面试官个人喜好。
1、公司规模
从职责角度来说,
作为数据分析师,天天和数据库打交道。
如果了解一些数据库底层原理,对于代码性能调优、日常任务部署优化等具有优势,可相对提高工作效率。
大公司:底层数据建设相对完善,不强制要求数据分析师一定需具备数据开发能力,基础数据产品完备,已辅助数据分析师降低日常数据提取的操作成本。
中小型公司:绝大多数公司的底层建设相对不太完善,没有操作方便的数据提取工具、没有体验友好的可视化界面、没有自动代码调优的数据产品等等,可能需要数据分析师懂点Linux脚本语言、需要会点数据开发知识。
从成本角度来说,
服务器资源是公司一大笔开销成本。
对于大公司,不言而喻,粮草充足,这部分成本完全可以cover住;
中小公司,开源节流,每一项开支都要精打细算,耗资占比较高的服务器成本当然也不例外。
所以有些中小型公司要求数据分析师,最好懂得一些数据开发基本原理知识,无论是对于资源的合理使用,还是日常工作的数据提取都有帮助。
2、团队部门及职能
Title为 “数据分析工程师” 的一般对大数据技能要求稍高一些,由于工作内容会涉及到偏数据工程部分,因此面试中问到此类知识的概率和密度较高。
Title为 “数据分析师” 的大部分对大数据技能的态度是有则是加分项。
但有些岗位所属部门偏中台,或者归属于ETL的数仓团队,
由于所属部门调性,数据分析师可能需要承担部分ETL工作,比如构建公共模型供给各业务支线使用,因此要求懂一些基础的数开知识,方便开展工作。
3、面试官个人喜好
面试中,有可能碰到交叉面,有些面试官并不一定是数据分析出身,会根据他所负责领域、日常工作常见问题进行提问。
有可能面试官考核侧重点不同,有些较注重应聘者的基础知识掌握是否扎实,会针对数据分析师的基本功、实践能力进行考核提问。
因此,所遇面试官不同,偏好不同,会被问到的大数据相关技能的概率、知识深浅程度不同。
三
是否需要掌握?
一方面对照第二部分,尽量获取到你所面试的行业和部门信息,直接看Title、看部门初步判断。
另一方面取决于你的准备时间是否充分。
由于数据分析师,不仅需要具备业务思维,又需要利用专业知识、从数据角度为业务赋能。
因此涉及知识面广,所需要复习准备的领域较多
所以,针对应届生:
如果你的时间充分,其余方面准备的差不多,在有余力的情况下,多学多准备有益无害;
如果你的时间较为紧张,从考核概率和知识点密度角度来说,建议优先准备其他方面。
针对(准)应届生/社招:时间较为充裕,多学习总有好处。
四
如何复习准备?
对于时间充裕的,可以阅读相关书籍、去阿里云网站学习操作手册,争取较系统的了解掌握。(ps.公众号资料包里有相关书籍推荐)
时间较为紧张的,还是那句话,用“应试”思维,先准备其他方面,学会“搏”考核概率高的知识点。
五
高频面试题
问题1:数据倾斜是什么?造成原因有哪些?该怎么办?
思路参考:详见此篇【数据分析】面试高频类型——大数据技能(一)
问题2:介绍一下Mysql和Hivesql的区别?
思路参考:可以从两方面来回答。
一方面,可以从底层原理出发回答,例如:
查询语言不同:Hive是hql语言,Mysql是sql语句;
存储位置不同:Hive是建立在 Hadoop 之上的,所有数据存储在hdfs中的,而Mysql数据是存储在自己的本地文件系统中;
数据格式:Hive数据格式可以用户自定义,Mysql有自己的系统定义格式;
数据更新:由于Hive的设计是针对数据仓库的应用而设计,应用场景读多写少。故Hive中不支持对数据的增改。而Mysql中的数据可支持更新修改;
索引:Hive在加载数据的过程中不会对数据进行任何处理,甚至不会对数据进行扫描,因此也没有对数据中的某些 Key 建立索引,在查询数据时是通过Mapreduce很暴力的把数据都查询一遍,因此访问延迟较高。但由于 MapReduce 的引入,Hive 可以并行访问数据,故即使没有索引,对于大数据量的访问,Hive 仍然可以体现出优势。而Mysql有索引,对于少量特定条件的数据的访问,数据库可以有很高的效率,较低的延迟。
数据规模:由于 Hive 建立在集群上并可以利用 MapReduce 进行并行计算,因此Hive存储的数据量超级大,而Mysql只是存储一些少量的业务数据;
底层执行原理:Hive底层是用的Mapreduce,而Mysql是excutor执行器;
另一方面,也可以从作为使用者角度出发回答,例如:
Hivesql不支持非等值连接,一般使用left join、right join 或者inner join替代来处理逻辑;
Hive中不能使用省去join的写法;
Hive不支持将数据插入现有的表或分区中,仅支持覆盖重写整个表。利用INSERT OVERWRITE 重写覆盖;
HQL不支持行级别的增、改、删,所有数据在加载时就已经确定,不可更改。
问题3:如果查询一个数据很大很慢,该如何解决?
思路参考:
首先,Hive对SQL语句性能问题排查的方式,有2种:
使用explain查看执行计划;
查看YARN提供的日志。
常用的优化思路有以下几种:
SQL语句优化:例如,是否使用了distinct,是否可以加入一些限定条件过滤等;
调参优化:例如设置map、reduce的参数;并行执行,调节parallel参数等;
数据格式优化:执行同样的SQL语句及同样的数据,只是数据存储格式不同,执行时长也会不同。
以空间换时间:例如,有效地减小数据集,拆写逻辑,建立临时表。
问题4:为什么要对数据仓库分层?
思路参考:可以针对数据仓库的使用方分角色来阐述。例如:
操作者:数据仓库分层本质是以空间换时间。通过数据分层管理可以简化数据清洗的过程,相当于把一项复杂的工作拆成了多个简单步骤的工作,从一个大的黑盒变成了一个透明盒,每一层的处理逻辑相对易理解易操作,较易保证每一个步骤的正确性,当数据发生错误的时候,一般不会牵一发而动全身,只需要局部调整某个步骤即可。若不分层,当源业务系统的业务规则发生变化将会影响整个数据清洗过程,工作量巨大,耗时较长。
应用者:提升应用系统的用户(比如BI)体验和效率。例如
清洗后的脏数据,简化业务复杂结构数据,具有清晰数据结构,减少重复开发;
规范的表&段名称,统一的字段数据格式,完善的注释内容,易于定位和理解。
问题5:数仓分层的结构有哪些?每一层的大致作用是什么?
思路参考:常见通用数仓分层设计:ODS、DW、APP。
每层主要作用如下:
ODS:数据源层。主要将各个业务数据导入到大数据平台,作为业务数据的快照存储。
DW:汇总数据层。
DWD:明细数据层。保留数据的原始粒度,在ODS基础上对数据加工处理,提供清洗后较干净的数据。
DWS:汇总数据层。主题层,根据业务域划分,存放高度聚合汇总的数据。
APP:面向业务定制的应用数据层。服务于业务特定场景,复用性不强。