新書推薦:
《
一个英国军事顾问眼中的二战
》
售價:HK$
285.2
《
就业、利息和货币通论(徐毓枬译本)(经济学名著译丛)
》
售價:HK$
69.0
《
瘦肝
》
售價:HK$
102.4
《
股票大作手回忆录
》
售價:HK$
57.3
《
秩序四千年:人类如何运用法律缔造文明(世界重归混乱,文明岌岌可危,法律与秩序是我们仅有的武器。穿越时间,鸟瞰全球,一部波澜壮阔的人类文明史)
》
售價:HK$
158.7
《
民法典1000问
》
售價:HK$
102.4
《
国术健身 易筋经
》
售價:HK$
34.3
《
古罗马800年
》
售價:HK$
193.2
|
編輯推薦: |
Kettle易用性好,编码工作量小,功能完备,基于Java,允许多线程与并发执行以提高效率。本书以CDH作为Hadoop平台,结合销售订单示例,详细介绍并演示如何使用Kettle完成Hadoop数据仓库的ETL过程。本书适合大数据分析系统开发、数据仓库系统设计与开发、DBA、架构师等相关技术人员阅读。
|
內容簡介: |
Kettle是一款国外开源的ETL工具,纯Java编写,无须安装,功能完备,数据抽取高效稳定。 本书介绍并演示如何用Kettle完成Hadoop数据仓库上的ETL过程,所有的描绘场景与实验环境都是基于Linux操作系统的虚拟机。全书共分10章,主要内容包括ETL与Kettle的基本概念、Kettle安装与配置、Kettle对Hadoop的支持、建立ETL示例模型、数据转换与装载、定期自动执行ETL作业、维度表技术、事实表技术,以及Kettle并行、集群与分区技术。 本书既适合大数据分析系统开发、数据仓库系统设计与开发、DBA、架构师等相关技术人员阅读,也适合高等院校和培训机构人工智能与大数据相关专业的师生参考。
|
關於作者: |
王雪迎 ,毕业于中国地质大学计算机专业,高级工程师,20年数据库、数据仓库相关技术工作经验。先后供职于北京现代商业信息技术有限公司、北京在线九州信息技术服务有限公司、华北计算技术研究所、北京优贝在线网络科技有限公司,担任DBA、数据架构师等职位。著有图书《Hadoop构建数据仓库实践》《HAWQ数据仓库与数据挖掘实战》《SQL机器学习库MADlib技术解析》《MySQL高可用实践》。
|
目錄:
|
第1章 ETL与Kettle 1
1.1 ETL基础 1
1.1.1 数据仓库架构中的ETL 1
1.1.2 数据抽取 3
1.1.3 数据转换 5
1.1.4 数据装载 6
1.1.5 开发ETL系统的方法 6
1.2 ETL工具 7
1.2.1 ETL工具的产生 7
1.2.2 ETL工具的功能 7
1.3 Kettle基本概念 10
1.3.1 Kettle设计原则 11
1.3.2 转换 12
1.3.3 作业 15
1.3.4 数据库连接 18
1.3.5 连接与事务 21
1.3.6 元数据与资源库 21
1.3.7 工具 22
1.3.8 虚拟文件系统 26
1.4 为什么选择Kettle 27
1.4.1 主要特性 27
1.4.2 与SQL的比较 27
1.5 小结 30
第2章 Kettle安装与配置 31
2.1 安装 31
2.1.1 确定安装环境 31
2.1.2 安装前准备 33
2.1.3 安装运行Kettle 41
2.2 配置 43
2.2.1 配置文件和.kettle目录 44
2.2.2 用于启动Kettle程序的shell脚本 48
2.2.3 管理JDBC驱动 49
2.3 使用资源库 50
2.3.1 Kettle资源库简介 50
2.3.2 创建数据库资源库 50
2.3.3 资源库的管理与使用 51
2.4 小结 55
第3章 Kettle对Hadoop的支持 56
3.1 Hadoop相关的步骤与作业项 56
3.2 连接Hadoop 57
3.2.1 连接Hadoop集群 57
3.2.2 连接Hive 63
3.2.3 连接Impala 64
3.2.4 建立MySQL数据库连接 66
3.3 导入导出Hadoop集群数据 67
3.3.1 向HDFS导入数据 67
3.3.2 向Hive导入数据 67
3.3.3 从HDFS抽取数据到MySQL 68
3.3.4 从Hive抽取数据到MySQL 70
3.4 执行HiveQL语句 72
3.5 执行MapReduce 72
3.5.1 生成聚合数据集 72
3.5.2 格式化原始Web日志 77
3.6 执行Spark作业 81
3.6.1 在Kettle主机上安装Spark客户端 81
3.6.2 为Kettle配置Spark 81
3.6.3 提交Spark作业 82
3.7 小结 83
第4章 建立ETL示例模型 84
4.1 业务场景 84
4.1.1 操作型数据源 84
4.1.2 销售订单数据仓库模型设计 85
4.2 Hive相关配置 86
4.2.1 选择文件格式 86
4.2.2 选择表类型 88
4.2.3 支持行级更新 92
4.2.4 Hive事务支持的限制 94
4.3 建立数据库表 94
4.3.1 源数据库表 94
4.3.2 RDS库表 97
4.3.3 TDS库表 98
4.4 装载日期维度数据 100
4.5 小结 103
第5章 数据抽取 104
5.1 Kettle数据抽取概览 104
5.1.1 文件抽取 105
5.1.2 数据库抽取 116
5.2 变化数据捕获 119
5.2.1 基于源数据的CDC 119
5.2.2 基于触发器的CDC 125
5.2.3 基于快照的CDC 126
5.2.4 基于日志的CDC 130
5.3 使用Sqoop抽取数据 132
5.3.1 Sqoop简介 132
5.3.2 使用Sqoop抽取数据 134
5.3.3 Sqoop优化 137
5.4 小结 138
第6章 数据转换与装载 139
6.1 数据清洗 139
6.1.1 处理“脏数据” 139
6.1.2 数据清洗原则 140
6.1.3 数据清洗实例 140
6.2 Hive简介 146
6.2.1 Hive体系结构 147
6.2.2 Hive工作流程 148
6.2.3 Hive服务器 149
6.2.4 Hive优化 152
6.3 初始装载 160
6.3.1 系统初始化 162
6.3.2 装载过渡区 164
6.3.3 装载维度表 165
6.3.4 装载事实表 167
6.3.5 设置后装载日期 168
6.4 定期装载 168
6.4.1 设置系统日期 169
6.4.2 装载过渡区 169
6.4.3 装载维度表 169
6.4.4 装载事实表 174
6.4.5 设置后装载日期 176
6.5 小结 178
第7章 定期自动执行ETL作业 179
7.1 使用crontab 179
7.1.1 crontab权限 180
7.1.2 crontab命令 180
7.1.3 crontab文件 181
7.1.4 crontab示例 181
7.1.5 crontab环境 182
7.1.6 重定向输出 183
7.2 使用Oozie 183
7.2.1 Oozie体系结构 184
7.2.2 CDH 6.3.1中的Oozie 185
7.2.3 建立定期装载工作流 185
7.2.4 建立协调器作业定期自动执行工作流 197
7.2.5 在Kettle中执行Oozie作业 200
7.2.6 Oozie优化 201
7.3 使用start作业项 202
7.4 小结 203
第8章 维度表技术 205
8.1 增加列 205
8.1.1 修改数据库模式 206
8.1.2 修改Sqoop作业项 206
8.1.3 修改定期装载维度表的转换 207
8.1.4 修改定期装载事实表的转换 210
8.1.5 测试 210
8.2 维度子集 211
8.2.1 建立包含属性子集的子维度 212
8.2.2 建立包含行子集的子维度 214
8.2.3 使用视图实现维度子集 216
8.3 角色扮演维度 217
8.3.1 修改数据库模式 217
8.3.2 修改Kettle定期装载作业 218
8.3.3 测试 220
8.3.4 一种有问题的设计 223
8.4 层次维度 224
8.4.1 固定深度的层次 224
8.4.2 多路径层次 228
8.4.3 参差不齐的层次 229
8.4.4 递归 230
8.5 退化维度 238
8.5.1 退化订单维度 239
8.5.2 修改定期装载脚本 241
8.5.3 测试修改后的定期装载 241
8.6 杂项维度 242
8.6.1 新增销售订单属性杂项维度 245
8.6.2 修改定期装载Kettle作业 246
8.6.3 测试修改后的定期装载 247
8.7 维度合并 248
8.7.1 修改数据仓库模式 249
8.7.2 初始装载事实表 251
8.7.3 修改定期装载Kettle作业 253
8.7.4 测试修改后的定期装载 254
8.8 分段维度 255
8.8.1 年度销售订单星型模式 256
8.8.2 初始装载 258
8.8.3 定期装载 260
8.9 小结 261
第9章 事实表技术 262
9.1 事实表概述 262
9.2 周期快照 263
9.2.1 修改数据仓库模式 263
9.2.2 创建快照表数据装载Kettle转换 265
9.3 累积快照 267
9.3.1 修改数据库模式 268
9.3.2 修改增量抽取销售订单表的Kettle转换 270
9.3.3 修改定期装载销售订单事实表的Kettle转换 270
9.3.4 修改定期装载Kettle作业 271
9.3.5 测试 274
9.4 无事实的事实表 276
9.4.1 建立新产品发布的无事实的事实表 277
9.4.2 初始装载无事实的事实表 278
9.4.3 修改定期装载Kettle作业 280
9.4.4 测试定期装载作业 281
9.5 迟到的事实 281
9.5.1 修改数据仓库模式 282
9.5.2 修改定期装载Kettle转换 282
9.5.3 修改装载月销售周期快照事实表的作业 283
9.5.4 测试 286
9.6 累积度量 289
9.6.1 修改模式 289
9.6.2 初始装载 290
9.6.3 定期装载 291
9.6.4 测试定期装载 292
9.6.5 查询 294
9.7 小结 295
第10章 并行、集群与分区 296
10.1 数据分发方式与多线程 296
10.1.1 数据行分发 297
10.1.2 记录行合并 298
10.1.3 记录行再分发 299
10.1.4 数据流水线 301
10.1.5 多线程的问题 301
10.1.6 作业中的并行执行 302
10.2 Carte子服务器 303
10.2.1 创建Carte子服务器 303
10.2.2 定义子服务器 304
10.2.3 远程执行 304
10.2.4 监视子服务器 306
10.2.5 Carte安全 306
10.2.6 服务 307
10.3 集群转换 308
10.3.1 定义一个静态集群 308
10.3.2 设计集群转换 310
10.3.3 执行和监控 310
10.3.4 元数据转换 312
10.3.5 配置动态集群 313
10.4 数据库分区 315
10.4.1 在数据库连接中使用集群 315
10.4.2 创建数据库分区schemas 317
10.4.3 启用数据库分区 318
10.4.4 数据库分区示例 319
10.4.5 集群转换中的分区 321
10.5 小结 322
|
內容試閱:
|
2017年我写了本书,名为《Hadoop构建数据仓库实践》。那本书详细地介绍了如何利用Hadoop生态圈组件构建传统数据仓库,如使用Sqoop从关系型数据库全量或增量抽取数据到Hadoop系统、使用Hive进行数据转换和装载处理、使用Oozie调度ETL过程自动定时执行等。作为进阶,书中还讲解了多维数据仓库技术中的渐变维、代理键、角色扮演维度、层次维度、退化维度、无事实的事实表、迟到事实、累计度量等常见问题在Hadoop上的处理方法。所有这些内容都以CDH(Clouderas Distribution Including Apache Hadoop)为运行平台,并用一个简单的销售订单示例来系统说明。
该书介绍的大部分功能都是通过Hive SQL来实现的,其中有些SQL语句逻辑复杂,可读性也不是很好。如今四年过去了,技术已经有了新的发展,同时我对Hadoop数据仓库这个主题也有了新的思考,那就是有没有可能使用一种GUI(Graphical User Interface,图形用户界面)工具来实现上述所有功能呢?伴随着寻找答案的过程,经过持续的实践与总结,于是就有了呈现在读者面前的这本新书。本书介绍并演示如何用Kettle完成Hadoop数据仓库的ETL过程。我们仍然以CDH作为Hadoop平台,沿用相同的销售订单示例进行说明,因此可以将本书当作《Hadoop构建数据仓库实践》的另一版本。
面对各种各样的ETL开发工具,之所以选择Kettle,主要由于它的一些鲜明特性。首先,很明确的一点是,作为一款GUI工具,Kettle的易用性好,编码工作量小化。几乎所有的功能都可以通过用户界面完成,提高了ETL过程的开发效率。其次,Kettle的功能完备。书中演示所用的Kettle 8.3版本几乎支持所有常见的数据源,并能满足ETL功能需求的各种转换步骤与作业项。第三,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月
|
|