ETL工程师们的日常工作是什么?
一般传统公司称ETL工程师,因为以前经常是将业务系统的数据取出来放到数仓中,按照星型或雪花型建模。ELT的核心思想就是要利用下游数据存储性能大幅提升和机器学习应用的灵活性的优势,在数据流转的过程中不做过于复杂的计算。
ETL工程师的日常包括,首先是梳理,我们经常说以终为始,在行动之前需要先想清楚这些数据的用途,不应为了ETL而ETL。
所以对于一个优秀的数据工程师而言,需要非常理解公司使用这些数据能做到什么,而这就涉及到你对公司业务,数据逻辑的理解是否透彻。我认为这是作为一个好的数据工程师的前提。
举个例子,不管是做数仓的建设,内容的推荐,还是做一些反欺诈、资产推荐等,这个范围非常广。所以ETL工程师要先理解做这件事情的目标,进而再向上追溯需要做哪些工作才能支撑该目标。如果能用全局的观念做这件事情,相信能取得很好的效果。
现在为什么叫数据工程师?
数据量的增多,数据产生的价值和变现的维度也随之增多了,数据工程师需要掌握的技能发生了许多变化。其中最重要的是:养数据,运营数据和达到公司的数据目的。上下游的关系的处理日益重要。
ETL工程师们的日常工作是什么?上游,跟业务系统的人打交道,所以要对业务系统比较熟悉。比如它们存在各种接口,不管是API级别还是数据库接口,这都需要ETL工程师非常了解。
下游,要跟许多数据分析师、数据科学家打交道。比如将准备好的数据(数据的清洗、整理、融合),交给下游的数据分析师和数据科学家。
我们以前常说的BA\BI,主要负责报表的展示分析。数据科学家则可能做一些Adhoc的数据分析,与AI、数据应用的相关性更高。
ETL工程师们的日常工作是什么?ETL工程师的价值在哪?
ETL工程师们的日常工作是什么?第一、是数据的获取。想要发挥数据价值的前提是要获取数据。巧妇难为无米之炊也就是这个意思。
为此,最好能有一个数据目录将这些业务系统中的数据整理清楚,比如它们在哪,都有什么意义等。这时,如果别人向你要数据你就能很快的定位到,需要工程师对收集的数据如数家珍。
为什么是这样?在小公司还好,如果在大公司可能有几十、数百个系统,每个系统中存有几十,甚至上千张表。这时理解这些系统和任务其实是一个非常复杂的工作。
第二要构建好的工具和方法提取这些数据。这中间还有许多维度,比如上游系统的侵入性是不是很高,它能给你何种权限等。另外,还需要考虑这些数据能否丢失,数据的语义需要什么保障,传输的准确性有什么要求。相当于需要有自己的工具箱,能清楚地知道对于不同维度的要求可以分别使用哪个工具,针对不同情况能变换相应的策略和方法。
数据采集有三种途径:
一、埋点。
二、文件系统抽取。
三、通过API拿数。
下一步可能清洗,有两种情况:一种是将数据放到一个统一的ODS(OperationalDataStore)平台,先拉数据再做清洗。一般的数据仓库应用系统都具有非常复杂的数据来源,这些数据存放在不同的地理位置、不同的数据库、不同的应用之中,从这些业务系统对数据进行抽取并不是一件容易的事。因此,ODS用于存放从业务系统直接抽取出来的数据,这些数据从数据结构、数据之间的逻辑关系上都与业务系统基本保持一致,因此在抽取过程中极大降低了数据转化的复杂性。
另一种是一边传输一边清洗。针对这两种情况工程师要非常明白,为达到数据目标应该采取何种措施。这其中会有一些偏好或取舍,需要在存储空间、执行效率之间找到平衡。
第三、关于实时和批量在此也有所影响。目前批流一体是当下的一个发展趋势,即在统一平台中管理各种任务,解决多个平台的运维难题。这要求工程师需要熟悉许多工具,比如流式的计算框架,例如KafkaConnect本身是一个业界被广泛采用的ELT框架,针对容错、分布式、Schema一致性等方面都提供了良好的支持,同时有大量的社区和商业资源可供参考和选择。例如,Spark(Streaming),再例如,Flink等。
第四、是数据的存储。数据存储分为几级,有ODS层、数仓层、数据集市层,再往上是AI层、BI层。关于数据存储也有很多学问,比如,结构互异的存储,在入库时需要考虑上游系统与下游的目标系统可能是不同的。
ETL工程师们的日常工作是什么?DataPipeline陈诚对此文亦有贡献。
陈诚,数见科技创始人CEO,本科就读于上海交通大学,留学于美国密歇根大学并获荣誉毕业,曾就职于美国Google、Yelp等国际知名公司;专注于大数据、计算机算法、软件工程、互联网产品等领域的研究,曾参与大数据团队构建实时可扩展大数据平台每年给Yelp节省上千万美元。
亲爱的数据
出品:谭婧
美编:陈泓宇