Kettle 構建 Hadoop ETL 系統實踐

Kettle 構建 Hadoop ETL 系統實踐

作者: 王雪迎
出版社: 清華大學
出版在: 2021-08-01
ISBN-13: 9787302582618
ISBN-10: 7302582610
裝訂格式: 平裝
總頁數: 322 頁





內容描述


Kettle是一款國外開源的ETL工具,純Java編寫,無須安裝,功能完備,數據抽取高效穩定。 本書介紹並演示如何用Kettle完成Hadoop數據倉庫上的ETL過程,所有的描繪場景與實驗環境都是基於Linux操作系統的虛擬機。全書共分10章,主要內容包括ETL與Kettle的基本概念、Kettle安裝與配置、Kettle對Hadoop的支持、建立ETL示例模型、數據轉換與裝載、定期自動執行ETL作業、維度表技術、事實表技術,以及Kettle並行、集群與分區技術。 本書既適合大數據分析系統開發、數據倉庫系統設計與開發、DBA、架構師等相關技術人員閱讀,也適合高等院校和培訓機構人工智能與大數據相關專業的師生參考。


目錄大綱


目錄
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 修改數據庫模式21
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


作者介紹


王雪迎,畢業於中國地質大學計算機專業,高級工程師,□0年數據庫、數據倉庫相關技術工作經驗。
先後供職於北京現代商業信息技術有限公司、北京在線九州信息技術服務有限公司、華北計算技術研究所、北京優貝在線網絡科技有限公司,擔任DBA、數據架構師等職位。
著有圖書《Hadoop構建數據倉庫實踐》《HAWQ數據倉庫與數據挖掘實戰》《SQL機器學習庫MADlib技術解析》《MySQL高可用實踐》。




相關書籍

Electron: From Beginner to Pro: Learn to Build Cross Platform Desktop Applications using Github's Electron

作者 Chris Griffith Leif Wells

2021-08-01

RabbitMQ in Depth

作者 Gavin M. Roy

2021-08-01

微服務項目實戰派 — 從 Spring Boot 到 Spring Cloud

作者 薑橋

2021-08-01