书籍详情
Kettle构建Hadoop ETL系统实践
作者:王雪迎 著
出版社:清华大学出版社
出版时间:2021-07-01
ISBN:9787302582618
定价:¥79.00
购买这本书可以去
内容简介
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
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
猜您喜欢