我理解的是ETL是在我们的 业务系统端之后,业务系统会沉淀一部分数据到关系型数据库或者是某些文件系统,然后大数据分析这一端开始抽取数据,第一步就是ETL。
Q4:ETL工作流程中涉及到哪些重点环节?每个环节对应的工具有什么?
它的环节也是见名知意。
抽取:这个环节可能主要是比如说Sqoop、Flume、Kafka、还有Kettle、DataX、Maxwell这些都是抽取工具。离线可能主要是用的Sqoop或者是DataX去进行离线数据的抽取,像实时可能会采用比如说Flume或者是Kafka、Maxwell,还有Kettle去进行抽取。
转换:转换包括清洗、合并、拆分、加工等等,可以用Hadoop生态的东西, MapReduce、Spark、Flink、Hive等去进行数据方面的清洗。
加载:抽取转换之后,就是将数据加载到目标数据库。可能会用到Hbase去存储一些大数据方面的东西,或者HDFS等等这些工具。
Q5:ETL工程师的岗位价值或者说重要性体现在哪里?
我认为ETL还是非常重要的, ETL如果做不好可能后续会有很多的一些问题,比如说数据如果没有清洗好,后续分析起来可能会有很多的脏数据等等。而且数据使用起来也非常的不方便。
Q6:ETL工程师是否有等级划分(例如初级、中级、高级)?
我认为任何岗位都应该有初、中、高级的一个划分,不管是在业务理解还是技术能力、需求理解沟通交流,以及在项目中的位置等等。
初级对业务理解的不是特别的深入,技术上也就是会使用,出现一些问题可能不能独立解决或者是独立解决的问题数量会比较少,需要去咨询大牛之类的。
中级对业务可能就相对来说比较熟悉了,另一方面就是理解能力也比较强,技术上可能已经比较熟练了,而且还对框架、原理都有一些了解,也会调优。而且中级可能会参与到管理中,分一个小组,做一些比较小的项目或者需求。
高级对业务就是非常熟悉了,技术是服务于业务的,所以熟悉业务非常重要,我们现在实现的功能,其实就是建立在业务的基础上去做的,另一方面高级的ETL工程师对各项技术、系统架构都非常熟悉或者是会设计这样的架构,同时具有管理能力,可以带领团队完成项目。
Q7:老师可以分享一下您的工作场景吗?
我分享上一家公司的离线数仓从0到1的经验吧。
在工作配合上,主要是跟 产品部门、运营部门以及财务部门进行一个配合。
大概的流程是产品会先给到需求,根据需求我们会做需求分析、模型设计以及模型苹果,然后建立模型,测试模型、优化模型,到模型上线以及模型维护这一套工作。
我去到那家公司的时候整个大数据的平台才刚开始搭建,刚申请好服务器这些东西。然后我们是先根据业务给的需求,去了解整个需求,在开始设计模型,我们会画比如说矩阵图,还有业务流程图,了解大概的业务流程。
了解数仓数据源有哪些数据,了解数据以后每种数据应该怎么抽取,抽取过来要存到哪儿、怎么存、是否要模型的转换;要对数据进行清洗、建模,建完模以后会有上层的不同粒度的聚合,聚合完以后进行具体的指标加工,再推送到数据库里面;最后通过一些BI软件把数据库里面的数据进行展现。
Q8:您认为ETL工程师的职业发展前景如何?
我个人认为ETL是非常重要的,现在很多公司都在招ETL工程师,而且现在大数据、AI、数据科学等等的这些都在一个风口上,并且都是比较火的,所以我觉得 ETL工程师以后的需求量会越来越大。
Q9:您认为ETL工程师这个岗位更适合哪些人群?
对于应届的同学来说一方面要喜欢大数据这方面的,另一方面就是喜欢技术、喜欢钻研。 应届从专业上来说可能是 计算机、数学这些都比较合适。
对于 转行的小伙伴来说首先要能 沉下心来学习,另一方面如果会一些Java、Linux这些技术,有一些开发的基础,也做过完整的系统,接触过数据库这些,相对来说就会比较容易。
另外 有python基础,或者之前做过大数据运维或者数据库运维的都可以。
Q10:您当初从Java转到大数据您的初衷是什么呢?
一方面是因为java程序员太多了, 业内可能比较饱和了;另一方面是除非进一些比较大的企业,或者是加入比较高端的项目,可能才会接触到一些比较有趣的东西,比如说高并发、多线程等等,对自己的能力也是一个挑战,不然的话可能每天都是在做一些增删改查的工作,感觉接触到这些还是挺难的。
另一方面就是当时因为接触到了大数据,感觉对大数据还是挺憧憬的,也好奇,想接触这方面的东西,所以就转到了大数据。
同时也是因为有Java的背景,这个对我的帮助特别大,比如说刚开始学Hadoop,其中MapReduce它的编程主要就是用Java语言去做的,如果你不了解Java的话,对于MapReduce的理解可能就会非常困难;如果不了解MapReduce,可能对Hadoop的底层也不了解。像后面学的内存计算Spark,它又是基于Hadoop的这个理念去开发的。
spark是用scala去开发的,但是scala运行的虚拟机又是Java的GVM,所以如果用java开发的话,也是可以跟spark很好的兼容,所以当时我在开发spark的时候也是用了这个java语言去开发。如果会java的话scala语言也是很容易上手的。
另一方面现在比较火的Flink,它和Spark的情况差不多,也是用scala语言编写,也是运行在Java的GVM虚拟机上。如果会java的话,对这个学习起来也是有很大的帮助。
Q11:针对想要从事ETL工程师的同学老师可以分享一下您的建议吗?
就这方面的意见我认为还得是 多看、多学、多练。
学习一些编程语言,比如刚才提到的java,如果java基础扎实的话,对大数据的学习是有很大的帮助的。
另一方面的话可能需要对linux比较熟。因为后面大数据所有的操作基本上都是在linux上面去操作。同时我还是建议就是往实时的方向走一走,虽然现在离线用的场景会很多,但是我觉得未来的话实时还是一个趋势。
END
嘿!小伙伴
加入爱数据职场知识分享社群
行业动态早知道
数匠大咖免费直播周周有
与5000+数分人一起
高效精准的学习返回搜狐,查看更多