更多精彩好文,尽在微信公众号《大数据阶梯之路》
一、数据仓库工程师是什么
首先,我要声明一点,数仓工程师不能有一个惯性思维,那便是把自己当成一个SQL工程师,即网络上调侃的:数仓工程师 = SQL boy
,我认为这是错误的定义❎。
在我近几年的工作沉淀中,我所理解的大数据工程师-数仓方向,其实是基于企业的海量数据而展开的岗位,当企业发展到了一定规模积累了海量数据,这个时候决策者就希望从大数据中提取有价值的数据从而帮助其做出正确的决策,实现以数据驱动业务增长和决策
,而这一个过程就可以有数据仓库工程师或者数据分析师的角色来参与了,即取数。
取数
:顾名思义,就是从大数据中获取数据进行编程开发实现一些统计指标以供决策,而离线数仓建设一般使用的是Hive,这里提到了Hive,那便科普一下Hive是什么,因为很多初学者对它或许有些误解。
hive并不是一个数据仓库,也不是一个数据库,其实可以把它当成是一个数据仓库工具来理解,hive出现的本质是为了让数据科学家或者不是专门搞大数据开发的人通过用类sql的语句hql来处理数据,但最终实现底层还是转换为MapReduce Job在集群上运行的,它就是作为一个友好的用户接口屏蔽了我们开发MapReduce程序而已。而说它不是一个数据仓库或者数据库,其实是因为它本身也不存储数据,像hive表的真实数据是存储于集群的HDFS中,而hive表的元数据是存储于hive内置的derby数据库或者常用的mysql数据库中,主要应用于OLAP这类分析系统而非OLTP这类实时响应高的查询系统。
好了,回归到数仓工程师是什么这个话题的讨论,我想说的是,数仓工程师可能日常相关编程开发常用的就是写HiveQL离线数仓建设,但不代表着工作就是一直在取数,我觉得我们数仓工程师不仅仅是取数,更重要的是管数
。
何为管数? 这里我就要说下我的看法,当今时代数据膨胀式增长,面对着一堆数据,如何取数分析是一个活,但如果不对数据进行管理,那么取数这个过程也就没那么方便了,这时候就会衍生出 数据管理
和数据治理
这2个大方向。
数仓工程师,不单单是要取数
,更要专注于管数
数据资产管理
,从而让数据有章可循,数据资产化,提升数据易用性和模型复用性
数据成本治理
,从而让数据成本不会一直膨胀式增长,对成本把控和链路优化以及稳定性保障
二、数仓开发需要学习什么
接下来分享下数仓工程师需要学习什么技术栈以及学习路线吧
- 技术栈:
hadoop/hive/spark/flink/presto/doris/数仓建设/数据湖/数据治理/数据管理
等等。
hadoop体系是分布式计算的基石,hive也是基于hadoop分布式文件系统上的查询接口。
flink是实时技术栈,近来很火的架构是flink结合doris这类OLAP引擎实现实时数仓架构,实时数仓建设对技术的要求比起hive离线数仓搭建更加高一些。
spark体系跟hadoop体系差不多,spark是基于内存计算的。
presto计算引擎也用来跟hadoop结合,提升计算查询效率。 - 学习路线:建议先学习hadoop体系,从hive出发,熟练了hiveQL编程后,熟悉下数仓建设的概念,比如维度建模啊,分层设计啊,星型模型啊,等等。
当有了前置这些学习技能再结合工作实践的沉淀,此时再往高层次方向思考,数据驱动业务应用产生的价值,真正理解数据产生的价值,然后专注于大数据 数据资产的管理,以及数据治理成本的把控,围绕提升数据易用性和成本把控和稳定性保障 方向思考。
三、最后总结一下数仓工程师的道路
接下来就分享下我所理解的数仓工程师的升级打怪之路吧
1. 熟练使用hive离线和flink实时等编程技术,以及实践分层模型表设计开发
-> 2. 深入实践数仓建设和优化模型架构,站在更高视角看大数据产品和数据模型架构
-> 3. 深入思考实践数据该如何管理和如何治理,才不会使大数据变成一个数据沼泽
-> 4. 紧随技术迭代发展,关注新技术的产生和应用场景