• Hadoop构建数据仓库实践读书笔记【3】--抽取转换装载


    ETL Exract Transform Load  抽取、转换、装载。

    ETL 是建立数据仓库最重要的处理过程,也是最体现工作量的环节,一般会占用到整个数据仓库项目工作量的一半以上。

    抽取:从操作型数据源获取数据。

    转换:转换数据,使之转变为适用于查询和分析的形式和结构。

    装载:将转换后的数据导入最终的目标数据仓库。

    建立一个数据仓库,就是要把来自于多个异构的源数据集成在一起,放置于一个集中的位置用于数据分析。(ETL系统的工作就是把异构的数据转换成同构的)

    抽取

    ** 物理和逻辑两方面介绍数据抽取的方法。

    1. 逻辑抽取
    • 全量抽取   源系统的数据全部被抽取。
    • 增量抽取  只抽取某个事件发生的特定的时间点儿之后的数据

        在许多数据仓库中,抽取过程不含任何变化数据捕获技术。把源系统中的整个表抽取到数据仓库过渡区,然后用这个表的数据和上次从源系统抽取到的表数据作对比,从而找出发生变化的数据。

       2.物理抽取

    • 联机抽取  数据直接从源系统抽取。抽取进程或者直连源系统数据库,访问他们的数据表,或者连接到一个存储快照日志或者变更记录表的中间层系统。(这个中间层系统并不需要必须和源系统物理分离)
    • 脱机抽取  数据不从源系统直接抽取,而是从一个源系统以外的过渡区抽取。过渡区可能已经存在(例如数据库备份文件、关系数据库系统的重做日志、归档日志等),或者抽取程序自己建立。

    常用的变化数据源捕获方法有时间戳、快照、触发器和日志四种。

    数据转换

    数据从操作型源系统获取后、需要进行多种转换操作。如统一数据类型、处理拼写错误、清除数据歧义、解析为标准格式等。

    数据转换的范围极广,从单纯的数据类型转化到复杂的数据清洗技术。

    数据转换一个最重要的功能就是清洗数据,目的是只有合规的数据才能进入目标数据仓库。(在不同的系统间交互和通信时尤其必要)。由于某些业务和技术需要,也需要进行多种数据转换。

    数据装载

    ETL最后的步骤是把转换后的数据装载进目标数据仓库。这步操作需要重点考虑两个问题,一个是数据装载的效率问题,二是一单装载过程中途失败了,如何重复执行装载过程。

    可以从以下几个方面入手:

    • 保证足够的系统资源。(配置高性能的服务器,并且要独占资源,不要与别的系统共用。)
    • 在进行装载时,要禁用数据库约束(唯一性,非空性,检查约束等),当装载过程完全完全结束后,再启用这些约束,重建索引,这种方法会很大的提高装载速度。

    开发一个ETL系统,常用的方式就是使用数据库的标准的SQL及其程序化语言,还可以使用Kettle这样的ETL工具。

    为了提高ETL的效率,通常这三步操作会并行执行。当书记被抽取时,转换进程同时处理已经收到的数据。一旦某些数据被转换过程处理完,装载进程就会将这些数据导入目标数据仓库,而不会等到前一步工作执行完才开始。

    Kettle

    Kettle的应用场景包括:在应用或数据库间迁移数据、把数据库中的数据导出成平面文件、向数据库大批量导入数据、数据转换和清洗、应用整合等。

    Kettle两大功能模块“转换”和“作业”

    转换:输入、输出、检验、映射、加密、脚本等很多分类,每个分类包括很多步骤。转换的步骤通过跳(hop)来连接,跳定义了一个单向通道,允许数据从一个步骤流向另一个步骤。在Kettle里,数据的单位是行,数据流就是数据行

    从一个步骤到另一个步骤的移动。转换是以并行方式执行的。

    而作业是以串行方式处理的,验证数据是否存在这一的操作就需要作业来完成。一个作业包括一个或多个作业项,作业项是以某种顺序来执行的,作业执行顺序由作业项之间的跳(hop)和每个作业项执行结果决定。和转换一样,作业也有很多分类,每个分类中包括多个作业项,如转换就是一个通用分类里的作业项。作业项也可以是一个作业,此时称该作业为子作业。

    负重前行
  • 相关阅读:
    第二次作业
    初学JAVA的 感想 尹鑫磊
    初学JAVA 感想
    《将博客搬至CSDN》
    JAVA中的几种内部类
    JAVA-静态变量与实体变量
    teacher页面的代码
    测试说明书的概述和摘要
    网站的概述
    html与xhtml的区别
  • 原文地址:https://www.cnblogs.com/astride/p/11190125.html
Copyright © 2020-2023  润新知