ETL流程
数据抽取(Extraction)
1.抽取的数据源类型可以分为结构化数据、非结构化数据、半结构化数据
2.数据源可以来自爬虫数据、日志数据、第三方数据、HBASE、关系型数据库
3.结构化数据一般采用JDBC、数据库日志方式(例如WAL),非|半结构化数据监听文件变动
Tips:
1.一般结构化的数据采用JDBC对数据库直连,消耗数据库的IO,增加数据库的负载,影响正常业务的运行,所以时间段一般在凌晨,业务量较少的一个时间段。此外,对于金融行业,一般不建议对数据库对库抽取,先是出于安全考虑,防止数据库的异常,影响业务运行,其次是直连数据库,抽取速度较为慢,因为数据库里面的IO是有限的,所以一部分要支持业务,一部分又要支持抽取,两边的速度都会变慢
2.对于WAL日志采集,对数据库的影响是极小的,因为不走数据库的前端IO,直接从本地采集文件,但是需要对采集到的数据进行解析才能得到数据,这个过程是非人工,用工具完成,比如说Oracle提供的OGG,大部分数据库支持的CDC等
3.对于非|半结构数据只需监听文件的变动,将变动后的数据进行抽取就行
抽取方式
1.数据抽取方式有全量同步、增量同步两种方式
2.全量同步会将全部数据进行抽取,一般用于初始化数据装载
3.增量同步方式会检测数据的变动,抽取发生变动的数据,一般用于数据更新
数据转换(Transformation)
1.数据转话要经历数据清洗和转换两个阶段
- 数据清洗主要是对出现的重复、二义性、不完整、违反业务或者逻辑规则等问题的数据进行统一的处理
- 数据转换主要是对数据进行标准化处理,进行字段、数据类型、数据定义的转换
2.结构化数据的转换过程中的逻辑较为简单,非|半结构化数据的转换会较为复杂
数据加载(Loading)
将最后处理完的数据导入到对应的目标源里