转型【数仓开发】该怎么学

2022-01-19 19:57:03 浏览数 (1)

Hi,我是小萝卜算子!

这篇我们从面试的角度讨论一下转【数仓开发】该怎么学、学什么、学到什么程度。

数仓社招面试一般分为三个部分:

  • 技术基础:基于简历上写的技术展开去讨论这些技术点的原理、底层实现等
  • sql实践:1~3道sql题,现场写
  • 讲项目:中间会基于项目中的一些点展开讨论,穿插业务理解、数据建模、治理相关问题的讨论

我们就朝着这三个方面去准备,尽量的把这些知识融会贯通,变成自己能说的东西。

方法论

我们学习是一个由模糊到清晰的过程:

知道概念—>学习理论—>大量练习—>逐渐清晰—>再大量练习—>清晰—>熟练运用—>融汇贯通

核心技能

数仓开发要学的基础技术大体如下:

整个的核心只有一个:sql

我们要学一门【java or scala语言】、要理解【hdfs&yarn】、练习【mapreduce or spark core】 都是为了更好的理解sql,理解sql背后的运行原理,调优原理,实际工作中很少会再去写代码实现一些逻辑了,这就是为啥我周边有很多同学不懂语言,但是能做数仓开发的工作。

学习方法

学习方法有两种:

  • 从基础原理学起,按部就班:基础语言—>hadoop(hdfs&yarn)—>hive/spark—>写sql—>项目
  • 简单搭建环境,从sql开始:练习写sql—>用sql实现简单数仓项目(模拟业务场景,写sql实现数据建表,逻辑编写,完成数据抽取)—> sql运行的平台的原理hadoop(hdfs&yarn) —> sql本身的原理(hive/spark) —> 想要深入了解源码(java or scala语言)

比较推荐第二种学法,第二种学法之所以能行的通,是因为sql现在已经被抽象为一门通用语言了,mysql/hivesql/sparksql 等这些sql语法大体都是相通的,比如你会mysql,再学hivesql和sparksql就相当容易。

有好多校招生、实习生入职之后,基本也是先从sql入手,试着实现各种逻辑,而后再考虑调优,原理这些。

对于核心技能,学的时候,要学细,能用脑子记住的尽量记脑子里,不要总想着【到时候查一下资料】好了。

就像跳舞一样,慢动作时,要把框架做的尽量大,做到极限。这样变成快节奏时,做的缩小的动作才有可能好看。如果慢动作的框架就很小,那快动作的框架只会更小,就不好看了。

学习资源

市面上学习资料很多、很全:挑资料中和上面列的基础技术点相关的看,比如spark streaming不需要看了。

【尚硅谷】的官网,B站都有课程,在淘宝上也能花很少的钱买到【尚硅谷】和【传智博客】整套的课程。

看过【尚硅谷】的数仓相关的项目,描述非常详细,我们一步一步照着做就ok

学到啥程度

用150分的态度去学sql框架相关:sql语法、sql实践、数仓的项目、sql的运行原理(mapreduce or spark core)、sql编译原理

对sql的一切都保持好奇心

1、Sql的熟练度,常用的关键字拼写和用法都要记住,不要总想着去查资料,要奔着都记住的目标去,才能用的熟练

2、给一道写sql的题:能不能很快有思路的写下来? 能不能判断出自己写的逻辑有没有可能出现数据倾斜的地方?如果有会在哪一块? 什么原因?有没有什么解决方案?

3、再激进一点,对一个不是很复杂的sql,能不能判断出这个sql会shuffle多少次?产生多少个stage?什么情况下会用SortMergeJoin/ShuffleHashJoin/BroadCastJoin? 为啥?

4、常用函数的运行原理:count(distinct )、row_number() over()、lateral view explode等常用关键字的运行原理:group by 、partition by、distribute by 等这些是不是能讲清楚

5、有关项目和数仓建模,在面试时对语言组织和表达能力要求比较高。 逼自己写几遍总结出来,不要边参考资料边写,凭自己的理解去写,写完后,再对着参考资料修改。 写作是思考的过程,能够锻炼组织语言的能力,把学到的东西变成自己的语言写出来。然后,再试着讲出来。

用100分的态度去学hdfs&yarn和语言基础相关的知识点

hdfs&yarn的原理能理解,能用自己的话讲出来

语言类只是一个工具,社招面试已经很少再揪着某种语言不放了

相信上面这些做到了,至少在技术层面,面试官对你已经心有所属了。

0 人点赞