本篇主要提供Kettle构建HadoopETL系统实践王雪迎有限公司电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com
商品基本信息,请以下列介绍为准 | |
商品名称: | Kettle构建Hadoop ETL系统实践(大数据技术丛书) |
作者: | 王雪迎 |
定价: | 79.0 |
出版社: | 清华大学出版社有限公司 |
出版日期: | 2021-07-01 |
ISBN: | 9787302582618 |
印次: | 1 |
版次: | 1 |
装帧: | |
开本: | 16开 |
内容简介 | |
Kettle是一款国外开源的ETL工具,纯Java编写,无须安能完备,数据抽取稳定。 本书介绍并演示如何用Kettle完成Hadoop数据仓库上的ETL过程,所有的描绘场景与实验环境都是基于Linux操作系统的虚拟机。全书共分10章,主要内括ETL与Kettle的基本概念、Kettle安装与配置、Kettle对Hadoop的支持、建立ETL示例模型、数据转换与装载、定期自动执行ETL作业、维度表技术、事实表技术,以及Kettle并行、集群与分区技术。 本书既适合大数据分析系统开发、数据仓库系统设计与开发、DBA、架构师等相关技术人员阅读,也适合高等院校和培训机构人工智能与大数据相关专业的师生参考。 |
目录 | |
第1章 ETL与Kettle 1.1 ETL基础 1.1.1 数据仓库架构中的ETL 1.1.2 数据抽取 1.1.3 数据转换 1.1.4 数据装载 1.1.5 开发ETL系统的方法 1.2 ETL工具 1.2.1 ETL工具的产生 1.2.2 ETL工能 1.3 Kettle基本概念 1.3.1 Kettle设计原则 1.3.2 转换 1.3.3 作业 1.3.4 数据库连接 1.3.5 连接与事务 1.3.6 元数据与资源库 1.3.7 工具 1.3.8 虚拟文件系统 1.4 为什么选择Kettle 1.4.1 主要特性 1.4.2 与SQL的比较 1.5 小结 第2章 Kettle安装与配置 2.1 安装 2.1.1 确定安装环境 2.1.2 安装前准备 2.1.3 安装运行Kettle 2.2 配置 2.2.1 配置文件和.kettle目录 2.2.2 用于启动Kettle程序的shell脚本 2.2.3 管理JDBC驱动 2.3 使用资源库 2.3.1 Kettle资源库简介 2.3.2 创建数据库资源库 2.3.3 资源库的管理与使用 2.4 小结 第3章 Kettle对Hadoop的支持 3.1 Hadoop相关的步骤与作业项 3.2 连接Hadoop 3.2.1 连接Hadoop集群 3.2.2 连接Hive 3.2.3 连接Impala 3.2.4 建立MySQL数据库连接 3.3 导入导出Hadoop集群数据 3.3.1 向HDFS导入数据 3.3.2 向Hive导入数据 3.3.3 从HDFS抽取数据到MySQL 3.3.4 从Hive抽取数据到MySQL 3.4 执行HiveQL语句 3.5 执行MapReduce 3.5.1 生成聚合数据集 3.5.2 格式化原始Web日志 3.6 执行Spark作业 3.6.1 在Kettle主机上安装Spark客户端 3.6.2 为Kettle配置Spark 3.6.3 提交Spark作业 3.7 小结 第4章 建立ETL示例模型 4.1 业务场景 4.1.1 操作型数据源 4.1.2 销售订单数据仓库模型设计 4.2 Hive相关配置 4.2.1 选择文件格式 4.2.2 选择表类型 4.2.3 支持行级更新 4.2.4 Hive事务支持的限制 4.3 建立数据库表 4.3.1 源数据库表 4.3.2 RDS库表 4.3.3 TDS库表 4.4 装载日期维度数据 4.5 小结 第5章 数据抽取 5.1 Kettle数据抽取概览 5.1.1 文件抽取 5.1.2 数据库抽取 5.2 变化数据捕获 5.2.1 基于源数据的CDC 5.2.2 基于触发器的CDC 5.2.3 基于快照的CDC 5.2.4 基于日志的CDC 5.3 使用Sqoop抽取数据 5.3.1 Sqoop简介 5.3.2 使用Sqoop抽取数据 5.3.3 Sqoop优化 5.4 小结 第6章 数据转换与装载 6.1 数据清洗 6.1.1 处理“脏数据” 6.1.2 数据清洗原则 6.1.3 数据清洗实例 6.2 Hive简介 6.2.1 Hive体系结构 6.2.2 Hive工作流程 6.2.3 Hive服务器 6.2.4 Hive优化 6.3 初始装载 6.3.1 系统初始化 6.3.2 装载过渡区 6.3.3 装载维度表 6.3.4 装载事实表 6.3.5 设置后装载日期 6.4 定期装载 6.4.1 设置系统日期 6.4.2 装载过渡区 6.4.3 装载维度表 6.4.4 装载事实表 6.4.5 设置后装载日期 6.5 小结 第7章 定期自动执行ETL作业 7.1 使用crontab 7.1.1 crontab权限 7.1.2 crontab命令 7.1.3 crontab文件 7.1.4 crontab示例 7.1.5 crontab环境 7.1.6 重定向输出 7.2 使用Oozie 7.2.1 Oozie体系结构 7.2.2 CDH 6.3.1中的Oozie 7.2.3 建立定期装载工作流 7.2.4 建立协调器作业定期自动执行工作流 7.2.5 在Kettle中执行Oozie作业 7.2.6 Oozie优化 7.3 使用start作业项 7.4 小结 第8章 维度表技术 8.1 增加列 8.1.1 修改数据库模式 8.1.2 修改Sqoop作业项 8.1.3 修改定期装载维度表的转换 8.1.4 修改定期装载事实表的转换 8.1.5 测试 8.2 维度子集 8.2.1 建含属性子集的子维度 8.2.2 建含行子集的子维度 8.2.3 使用视图实现维度子集 8.3 角色扮演维度 8.3.1 修改数据库模式 8.3.2 修改Kettle定期装载作业 8.3.3 测试 8.3.4 一种有问题的设计 8.4 层次维度 8.4.1 固定深度的层次 8.4.2 多路径层次 8.4.3 参差不齐的层次 8.4.4 递归 8.5 退化维度 8.5.1 退化订单维度 8.5.2 修改定期装载脚本 8.5.3 测试修改后的定期装载 8.6 杂项维度 8.6.1 新增销售订单属性杂项维度 8.6.2 修改定期装载Kettle作业 8.6.3 测试修改后的定期装载 8.7 维度合并 8.7.1 修改数据仓库模式 8.7.2 初始装载事实表 8.7.3 修改定期装载Kettle作业 8.7.4 测试修改后的定期装载 8.8 分段维度 8.8.1 年度销售订单星型模式 8.8.2 初始装载 8.8.3 定期装载 8.9 小结 第9章 事实表技术 9.1 事实表概述 9.2 周期快照 9.2.1 修改数据仓库模式 9.2.2 创建快照表数据装载Kettle转换 9.3 累积快照 9.3.1 修改数据库模式 9.3.2 修改增量抽取销售订单表的Kettle转换 9.3.3 修改定期装载销售订单事实表的Kettle转换 9.3.4 修改定期装载Kettle作业 9.3.5 测试 9.4 无事实的事实表 9.4.1 建立新产品发布的无事实的事实表 9.4.2 初始装载无事实的事实表 9.4.3 修改定期装载Kettle作业 9.4.4 测试定期装载作业 9.5 迟到的事实 9.5.1 修改数据仓库模式 9.5.2 修改定期装载Kettle转换 9.5.3 修改装载月销售周期快照事实表的作业 9.5.4 测试 9.6 累积度量 9.6.1 修改模式 9.6.2 初始装载 9.6.3 定期装载 9.6.4 测试定期装载 9.6.5 查询 9.7 小结 第10章 并行、集群与分区 10.1 数据分发方式与多线程 10.1.1 数据行分发 10.1.2 记录行合并 10.1.3 记录行再分发 10.1.4 数据流水线 10.1.5 多线程的问题 10.1.6 作业中的并行执行 10.2 Carte子服务器 10.2.1 创建Carte子服务器 10.2.2 定义子服务器 10.2.3 远程执行 10.2.4 监视子服务器 10.2.5 Carte 10.2.6 服务 10.3 集群转换 10.3.1 定义一个静态集群 10.3.2 设计集群转换 10.3.3 执行和监控 10.3.4 元数据转换 10.3.5 配置动态集群 10.4 数据库分区 10.4.1 在数据库连接中使用集群 10.4.2 创建数据库分区schemar/> 10.4.3 启用数据库分区 10.4.4 数据库分区示例 10.4.5 集群转换中的分区 10.5 小结 |
媒体评论 | |
Kettle易用性好,编码工作量能完备,基于Java,允许多线程与并发执行以提率。本书以CDH作为Hadoo台,结合销售订单示例,详细介绍并演示如何使用Kettle完成Hadoop数据仓库的ETL过程。本书适合大数据分析系统开发、数据仓库系统设计与开发、DBA、架构师等相关技术人员阅读。 轻松运用Kettle完成Hadoop数据仓库的FTL过程 |
前言 | |
前 言 2017年我写了本书,名为《Hadoop构建数据仓库实践》。那本书详细地介绍了如何利用Hadoop生态圈组件构建传统数据仓库,如使用Sqoop从关系型数据库全量或增量抽取数据到Hadoop系统、使用Hiv行数据转换和装载处理、使用Oozie调度ETL过程自动定时执行等。作阶,书中还讲解了多维数据仓库技术中的渐变维、代理键、角色扮演维度、层次维度、退化维度、无事实的事实表、迟到事实、累计度量等常见问题在Hadoop上的法。所有这些内容都以CDH(Cloudera's Distribution Including Apache Hadoop)为运台,并用一个简单的销售订单示例来系统说明。 该书介绍的大能都是通过Hive SQL来实现的,其中有些SQL语句逻辑复杂,可读性也不是很好。如今四年过去了,技术已经有了新的发展,同时我对Hadoop数据仓库这个主题也有了新的思考,那就是有没有可能使用一种GUI(Graphical User Interface,图形用户界面)工具来实现上述能呢?伴随着寻找答案的过程,经过持续的实践结,于是就有了呈现在读者面前的这本新书。本书介绍并演示如何用Kettle完成Hadoop数据仓库的ETL过程。我们仍然以CDH作为Hadoo台,沿用相同的销售订单示行说明,因此可以将本书当作《Hadoop构建数据仓库实践》的另一版本。 面对各种各样的ETL开发工具,之所以选择Kettle,主要由于它的一些鲜明特性。首先,很明确的一点是,作为一款GUI工具,Kettle的易用性好,编码工作量化。几乎所能都可以通过用户界面完成,提高了ETL过程的开发效率。其次,Kettl能完备。书中演示所用的Kettle 8.3版本几乎支持所有常见的数据源,并能满足E能需求的各种转换步骤与作业项。第三,Kettle是基于Java的解决方案,天然继承了Java的台性,只要有合适的JVM存在,转换或作业就能运行在任何环境台之上,真正做到台无关。后,Kettle允许多线程与并发执行,以提高程序执行效率。用户只需指定线程数,其他工作都交给Kettle处理,实现细节透明化。 本书内容 全书共分10章。第1章介绍ETL与Kettle的基本概念,如ETL定义、ETL工具、Kettle的设计原则、Kettle组能特性等。第2章讲解Kettle在Linux上的安装配置,括安装Java环境、安装GNOME Desktop图形界面、配置中文字符集和输入法、安装配置VNC远程控制等相关细节问题。第3章介绍Kettle对Hadoop的支持,说明如何配置Kettle连接Hadoop集群、Kettle含的Hadoop相关的步骤与作业项,演示Kettle导入导出Hadoop数据、执行MapReduce和Spark作业等。第4章说明贯穿全书的销售订单示例的搭建过程。第5章主要讲解用Kettle实现各种变换数据捕获方法,还有Sqoop作业项的使用。第6章说明Kettle的数据转换与能,以及在销售订单示例上的具体实现。第7章讲解Kettle如何支持ETL作业的自动调度括使用Oozie和Start作业项的实现。第8、9章详解多维数据仓库中常见的维度表和事实表技术,及其Kettle实现。第10章介绍三种与Kettle可扩展性相关的技术,即并行、集群和分区。 资源下载与技术支持 本书配套的资源下载信息,请用微信扫描右边的二维码获取,可按页面提示,把下载链接转发到自己的邮箱中下载。如果阅读过程中发现问题,请联系booksaga@163.com,邮件主题为“Kettle构建Hadoop ETL系统实践”。 读者对象 本书所有的描绘场景与实验环境都是基于Linux操作系统的虚拟机,需要读者具有一定的Hadoop、数据仓库、SQL与Linux基础。本书适合大数据分析系统开发、数据仓库系统设计与开发、DBA、架构师等相关技术人员阅读,也适合高等院校和培训机构人工智能与大数据相关专业的师生教学参考。 致谢 在本书编写过程中,得到了很多人的帮助与支持。首先要感谢我所在的公司(优贝在线)提供台和环境,感谢同事们工作中的鼎力相助。没有那里的环境和团队,也就不会有这本书。感谢清华大学出版社图格事业部的编辑们,他们的辛勤工作使得本书得以尽早与读者见面。感谢CSDN提供的技术分台,给我有一个将博客文章整理成书的机会。后,感谢家人对我一如既往的支持。由于本人有限,书中疏漏之处在所难免,敬请读者批评指正。 著 者 2021年5月 |
摘要 | |
1.1ETL基础 ETL一词是Extract、Transform、Load三个英文单词的首字母缩写,中文意为抽取、转换、装载。 抽取——从操作型数据源获取数据。 转换——转换数据,使数据的形式和结构适用于查询与分析。 加载——将转换后的数据导入到终的目标数据仓库。 ETL是建立数据仓库重要的处理过程,也是能体现工作量的环节,一般会占到整个数据仓库项目工作量的一半以上。建立一个数据仓库,就是要把来自于多个异构源系统的数据整合在一起,并放置于一个集中的位置行数据分析。如果这些源系统数据原本就是相互兼容的,那当然省事了,但是实际情况往往不是如此。而ETL系统的工作就是把异构数据转换成同构数据。如果没有ETL,就很难对异构数行程序化分析。 1.1.pan>数据仓库架构中的ETL数据仓库架构可以理解成构成数据仓库的组件及其之间的关系,如图1-pan>所示。图1-pan>中显示的整个数据仓库环括操作型系统和数据仓库系统两大部分。操作型系统的数据由各种形式的业务数据组成,其中可含关系型数据库、TXT或CSV文件、HTML或XML文档,还可能存在外部系统的数据,比如网络爬虫抓取来的互联网数据等。数据可能是结构化、半结构化或非结构化的。这些数据经过ETL过入数据仓库系统。这里把ETL分成抽取和转换装载两个部分。抽取过程负责从操作型系统获取数据,该过程一般不做数据聚合和,但是会按照主行集成,物理上是将操作型系统的数据全量或增量到数据仓库系统的RDS中。Hadoop生态圈中的主要数据抽取工具是Sqoop,用于在关系型数据库和Hadoop之间传输数据。转换装载过程对数行清洗、过滤、、统一格式化等一系列操作,使数据转换为适合查询的格式,然后装数据仓库系统的TDS中。传统数据仓库的基本工作模式是:首先是通过一些过程将操作型系统的数据抽取到文件,然后通过另一些过程将这些文件转化成MySQL或Oracle等关系型数据库中的记录,后一部分的过程则负责把数据导入到数据仓库。RDS(Raw Data Store)是原始数据存储的意思。将原始数据保存到数据仓库里是一个不错的想法。ETL过程中的bug或系统中的其他错误不可避免,因此保留原始数据以便有机会追踪并修改这些错误。有时,数据仓库的用户需要查询数据的细节,这些数据的粒度与操作型系统中数据的粒度相同。有了RDS,就很容易实现用户的这种查询需求,因为用户可以查询RDS中的数据而不会影响业务系统的正常运行。这里的RDS实际上起到了操作型数据存储(Operational Data Store,ODS)的作用。TDS(Transformed Data Store)意为转换后的数据存储,保存的是真正的数据仓库中的数据。大量用户会在经过转换的数据集上处理他们的日常查询。如果前面的工作做得好,这些数据的构建方式将保证重要的、频繁的查询能够快速执行。这里的原始数据存储和转换后的数据存储是逻辑概念,它们可能物理存储在一起,也可能分开。当原始数据存储和转换后的数据存储物理上分开时,它们不必使用同样的软硬件。在传统数据仓库中,原始数据存储通常使用本地文件系统,数据被收纳到相应的目录中,这些目录基于数据从哪里抽取或何时抽取来建立,例如以日期作为文件或目录名称的一部分。转换后的数据存储一般使用某种关系型数据库。在Hadoon中,可以将这两类数据从逻辑上分开,物理上通过在 Hive 中建立两个不同的数据库,所有数据都以分布式的方式存储到HDFS上。自动化调度组件的作用是自动定期重复执行ETL过程。不同角色的数据仓库用户对数据更新频次的要求也会有所不同,例如财务主管需要每月的营收报告,而销售人员想看到每天的产品销售数据。作为通用需求,所有数据仓库系统都应该能够建立周期性自动执行的工作流作业。ETL过程自动化是数据仓的重要衡量标准。传统数据仓库一般利用操作系统自带的能(如Linux的cron 或Windows的计划任务)来实现作业的自动执行。Hadoop生态圈中有一个名为Oozie的工具,它是一个基于Hadoop的工作流调度系统,可以使用它将ETL过程封工作流自动执行。数据目录有时也被称为元数据存储,能提供一份数据仓库中数据的清单。用户通过它可以快速解决一些问题,比如什么类型的数据应该存储在哪里、数据集的构建有何区别、数据后的访问或更新时间等。此外,还可以通过数据目录感知数据是如何作和转换的。一个好的数据目录是系统易用性的关键。Hadoop生态圈中主要的数据目录工具是HCatalog,它是Hadoop上的一个表,位于Hadoop的存储管理层。查询引擎组件负责实际执行用户的查询。在传统数据仓库中,它用来存储转换后的数据,可以是Oracle、MySQL等关系型数据库系统内置的查询引擎,还可以是以固定时间间隔向其导入OLAP数据立方体,如Ease数据立方体。Hadoop生态圈中的主要 SQL查询引擎有基于MapReduce(或Spark、Tez)的Hive、基于RDD的SparkSQL和基于MPP的Impala等。用户界面指的是终用户所使用的接口程序,可能是一个GUI软件(如BI套件中的客户端软件),也可能就只是一个浏览器。Hadoop生态圈中比较知名的数据可视化工具是Hue和Zeppelin。第3章“Ketle对Hadoop的支持”将详细介绍如何在Kettle 中使用Hadoop相关组件。 …… |
作者简介 | |
王雪迎 ,毕业于中国地质大学计算机专业,高级工程师,20年数据库、数据仓库相关技术工作经验。先后供职于北京现代商业信息技术有限公司、北京在线九州信息技术服务有限公司、华北计算技术、北京优贝在线网络科技有限公司,担任DBA、数据架构师等职位。著有图书《Hadoop构建数据仓库实践》《HAWQ数据仓库与数据挖掘实战》《SQL机器学习库MADlib技术解析》《MySQL高可用实践》。 |