《Kettle構建Hadoop ETL系統實踐》是清華大學出版社出版的圖書。
基本介紹
- 中文名:Kettle構建Hadoop ETL系統實踐
- 作者:王雪迎
- 類別:編程開發
- 出版社:清華大學出版社
- 出版時間:2021年8月1日
- 定價:79 元
- ISBN:9787302582618
內容簡介,目錄,作者介紹,
內容簡介
本書介紹並演示如何用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 修改資料庫模式 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
作者介紹
王雪迎 ,畢業於中國地質大學計算機專業,高級工程師,20年資料庫、數據倉庫相關技術工作經驗。先後供職於北京現代商業信息技術有限公司、北京線上九州信息技術服務有限公司、華北計算技術研究所、北京優貝線上網路科技有限公司,擔任DBA、數據架構師等職位。著有圖書《Hadoop構建數據倉庫實踐》《HAWQ數據倉庫與數據挖掘實戰》《SQL機器學習庫MADlib技術解析》《MySQL高可用實踐》。