3- ETL-ETL设计一

  ETL设计分三部分
    1> 数据抽取
    2> 数据的清洗转换
    3> 数据的加载

  继承问题
    1> 抽取,怎么从源系统抽取?抽取的步骤是什么?有哪些抽取方法?
    2> 数据的清洗和转换都做了哪些事情?
    3> 加载,怎么加载到数据仓库?
    4> 数据仓库通常分为好几层,这里的加载加载进哪一层?* 回答:加载到数据仓库的贴源层 ODS层

  在设计ETL的时候我们也是从这三部分出发:
    1> 数据的抽取是从各个不同的数据源抽取到ODS(OperationalDataStore,操作型数据存储)中——这个过程也可以做一些数据的清洗和转换),在抽取的过程中需要挑选不同的抽取方法,尽可能的提高ETL的运行效率。抽取过程负责从操作型系统获取数据,该过程一般不做数据聚合和汇总,物理上是将操作型系统的数据全量或增量复制到数据仓库的RDS中

    == RDS(RAW DATA STORES)是原始数据存储的意思==。它的作用主要有三个:
作为数据缓冲区;提供细节数据可供查询;保留原始数据,便于跟踪和修正ETL错误

    2> ETL三个部分中,花费时间最长的是“T”(Transform,清洗、转换)的部分,一般情况下这部分工作量是整个ETL的2/3。 转换转载过程将数据进行清洗、过滤、汇总、统一格式等一系列转换操作,使数据转为适合查询的格式,然后转载进数据仓库的TDS中

    TDS(TRANSFORMED DATA STORES)意为转换后的数据存储。这里存储真正的数据仓库中的数据

    传统数据仓库的基本模式是用一些过程将操作型系统的数据抽取到文件,然后另一些过程将这些文件转化成MySQL这样的关系数据库的记录。最后,第三部分过程负责把数据导入进数据仓库

    3> 数据的加载一般在数据清洗完了之后直接写入DW(DataWarehousing,数据仓库)中去。
备注:上面部分需要着重理解一下,到底是加载到哪里去了

ETL通常是按一个固定的时间间隔,周期性定时执行的,对于整体拉取的方式,每次导入的数据需要覆盖上次导入的数据。Sqoop提供了delete-target-dir参数实现覆盖导入。该参数指示在每次抽取数据前先将目标目录删除,作用是提供了一个幂等操作的选择。所谓幂等操作指的是其执行任意多次所产生的影响均与一次执行的影响相同。这样就能在导入失败或修复bug后可以再次执行该操作,而不用担心重复执行会对系统造成数据混乱。

3> 自动化调度组件的作用是自动定期重复执行ETL过程。作为通用的需求,所有数据仓库系统都应该能够建立周期性自动执行的工作流作业。传统数据仓库一般利用操作系统自带的调度功能(如Linux的cron或Windows的计划任务)实现作业自动执行。大数据可以使用Oozie和Falcon完成自动调度任务

数据目录也被称为元数据存储,它可以提供一份数据仓库中数据的清单。一个好的数据目录是让用户体验到系统易用性的关键

在数据仓库可以使用前,需要装载历史数据。这些历史数据是导入进数据仓库的第一个数据集合。首次装载被称为初始装载,一般是一次性工作。由最终用户来决定有多少历史数据进入数据仓库。例如,数据仓库使用的开始时间是2017年3月1日,而用户希望装载两年的历史数据,那么应该初始装载2015年3月1日~2017年2月28日之间的源数据。在2017年3月2日装载2017年3月1日的数据(假设执行频率是每天一次),之后周期性地每天装载前一天的数据。在装载事实表前,必须先装载所有的维度表。因为事实表需要引用维度的代理键。这不仅针对初始装载,也针对定期装载

数据仓库正式投入使用前,需要向其中装载历史数据,这通常是一次性操作。

初始ETL的一般过程包括:识别数据源;数据映射;确定数据导入方式;确定SCD处理方法等。

Sqoop用于在关系数据库和HDFS间传递数据,能实现覆盖导入和增量导入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值