最近发现身边有不少小伙伴想转行做数据工程师,聊天的过程中发现大家对该如何入门有很多迷茫的地方,周末写篇博客记录一下。
数据工程师该如何入门?话题有点大,而且每个人的理解都很不一样,因此我们会先限定一下会对这个话题感兴趣的人群:
前面已经限定了一个大致的话题范围,下面介绍一下主要的文章结构:
数据工程师这个概念其实很模糊,不同的人和公司对它赋予的含义也区别很大,感兴趣的可以看一下我前面的几篇文章。在这里,我们大概聊一下一般意义上的数据工程师在工作中会做什么?
这里面有很多内容其实是十分重合的,下面大致聊一下每一块内容大致需要学什么,以及侧重点。
数据工程师,基本上是离不开集群搭建,比如Hadoop、Spark、Kafka,不要指望有专门的运维帮你搞定,新组件的引入一般都要自己来动手的。
因此这就要求数据工程师了解各种大数据的组件。
由于要自己的安装各种开源的组件,就要求数据工程师要具备的能力:Linux。要对Linux比较熟悉,能各种自己折腾着玩。
由于现在的大数据生态系统基本上是JVM系的,因此在语言上,就不要犹豫了,JVM系的Java和Scala基本上跑不掉,Java基本上要学的很深,Scala就看情况了。
ETL 在大数据领域主要体现在各种数据流的处理。这一块一方面体现在对一些组件的了解上,比如Sqoop、Flume、Kafka、Spark、MapReduce;另一方面就是编程语言的需要,Java、Shell和Sql是基本功。
我们大部分的价值最后都会由系统来体现,比如报表系统和推荐系统。因此就要求有一定的系统开发能力,最常用的就是Java Web这一套了,当然Python也是挺方便的。
需要注意的是,一般数据开发跑不掉的就是各种提数据的需求,很多是临时和定制的需求,这种情况下,Sql 就跑不掉了,老老实实学一下Sql很必要。
前面提到了一些数据工程师会用到的技能树,如果希望了解更多,可以看一下《No.3 漫谈数据开发工程师的技术广度》。
下面给一个入门的建议,完全个人意见。
刚开始一定要了解清楚自己和行业的情况,很多人根本就分不清招聘信息中的大数据和数据挖掘的区别就说自己要转行,其实是很不负责的。不要总是赶热点,反正我就是经常被鄙视做什么大数据开发太Low,做数据就要做数据挖掘,不然永远都是水货。
如果真是清楚自己明确地想转数据开发了,要考虑一下自己的时间和精力,能拿出来多少时间,而且在学习的时候最好有人能多指点下,不然太容易走弯路了。
在选择具体的学习途径时,要慎重一点,有几个选择:
别的不说了,报班是可以考虑的,不要全指望报个辅导班就能带你上天,但是可以靠他帮你梳理思路。如果有专业从事这一行的人多帮帮的话,是最好的。不一定是技术好,主要是可沟通性强。
学习路线,下面是一个大致的建议:
到这里是一个基本的阶段了,大致对数据开发有一些了解了。接着要有一些有意思内容可以选学。
下面要有一些细分的领域需要深入进行,看工作和兴趣来选择一些来深入进行
我把数据工程师的概念缩小了一些,不包含机器学习和深度学习这些算法方向的内容,因此整体是有局限的。不过可以做一些参考。然后还有一些参考的书籍和网上的资料暂时也没时间整理。
希望这篇文章能提供一点点思路和参考,不至于特别盲目。有问题欢迎交流。