简介:如何利用FlinkSQL构建流批一体的ETL数据集成。
本文整理自云邪、雪尽在FlinkForwardAsia的分享,该分享以4个章节来详细介绍如何利用FlinkSQL构建流批一体的ETL数据集成,文章的主要内容如下:
数据仓库与数据集成数据接入(E)数据入仓/湖(L)数据打宽(T)数据仓库与数据集成
数据仓库是一个集成的(Integrated),面向主题的(Subject-Oriented),随时间变化的(Time-Variant),不可修改的(Nonvolatile)数据集合,用于支持管理决策。这是数据仓库之父BillInmon在年提出的数据仓库概念。该概念里最重要的一点就是“集成的”,其余特性都是一些方法论的东西。因为数据仓库首先要解决的问题,就是数据集成,就是将多个分散的、异构的数据源整合在一起,消除数据孤岛,便于后续的分析。这个不仅适用于传统的离线数仓,也同样适用于实时数仓,或者是现在火热的数据湖。首先要解决的就是数据集成的问题。如果说业务的数据都在一个数据库中,并且这个数据库还能提供非常高效的查询分析能力,那其实也用不着数据仓库和数据湖上场了。
数据集成就是我们常称作ETL的过程,分别是数据接入、数据清洗转换打宽、以及数据的入仓入湖,分别对应三个英文单词的首字母,所以叫ETL。ETL的过程也是数仓搭建中最具工作量的环节。那么Flink是如何改善这个ETL的过程的呢?我们先来看看传统的数据仓库的架构。
传统的数据仓库,实时和离线数仓是比较割裂的两套链路,比如实时链路通过Flume和Canal实时同步日志和数据库数据到Kafka中,然后在Kafka中做数据清理和打宽。离线链路通过Flume和Sqoop定期同步日志和数据库数据到HDFS和Hive。然后在Hive里做数据清理和打宽。
这里我们主要