第1章 數據架構整體設計 1
1.1 數據架構概述 1
1.2 數據架構設計的8個考慮因素 1
1.2.1 適用性 2
1.2.2 延伸性 2
1.2.3 安全性 3
1.2.4 易用性 3
1.2.5 高性能 4
1.2.6 成本限制 5
1.2.7 應用需求 5
1.2.8 運維管理 5
1.3 數據架構設計的4個核心內容 6
1.3.1 物理架構 6
1.3.2 邏輯架構 10
1.3.3 技術架構 13
1.3.4 數據流架構 15
1.4 常見的6種數據架構 17
1.4.1 簡單數據庫支撐的數據架構 17
1.4.2 傳統(tǒng)數倉支撐的數據架構 18
1.4.3 傳統(tǒng)大數據架構 20
1.4.4 流式大數據架構 22
1.4.5 流批一體大數據架構 23
1.4.6 存算分離的流批一體大數據架構 25
1.5 案例:某B2B企業(yè)的數據架構選型 26
1.5.1 企業(yè)背景 26
1.5.2 應用預期 27
1.5.3 數據現狀 27
1.5.4 選型分析 27
1.5.5 選型方案 28
1.5.6 未來拓展 29
1.6 常見問題 29
第2章 數據源和數據采集 32
2.1 數據源概述 32
2.1.1 常見的3種數據類型 32
2.1.2 常見的8種數據源 33
2.2 企業(yè)內部流量數據采集技術選型 33
2.2.1 企業(yè)內部流量數據采集常用的技術 34
2.2.2 內部流量數據采集技術選型的因素 37
2.2.3 內部流量數據采集技術選型總結 39
2.3 企業(yè)外部互聯網數據采集技術選型 40
2.3.1 外部互聯網數據采集常用的4種技術 40
2.3.2 外部互聯網數據采集技術選型的5個因素 44
2.3.3 外部互聯網數據采集技術選型總結 44
2.4 使用Requests+BeautifulSoup抓取數據并寫入Sqlite 45
2.4.1 安裝配置 45
2.4.2 基本示例 46
2.4.3 高級用法 47
2.4.4 技術要點 53
2.5 使用Scrapy+XPath抓取數據并寫入MongoDB 54
2.5.1 安裝配置 54
2.5.2 基本示例 55
2.5.3 高級用法 62
2.5.4 技術要點 69
2.6 案例:某B2C電商企業(yè)的數據源結構 69
2.6.1 企業(yè)背景 69
2.6.2 業(yè)務系統(tǒng) 69
2.6.3 數據源結構 71
2.7 常見問題 71
第3章 數據同步 74
3.1 數據同步概述 74
3.1.1 數據同步的3種模式 74
3.1.2 數據同步的5種預處理技術 75
3.2 數據同步的技術選型 76
3.2.1 數據同步的7種技術 76
3.2.2 數據同步選型的9個因素 80
3.2.3 數據同步技術選型總結 82
3.3 Python操作DataX實現數據同步 83
3.3.1 安裝配置 84
3.3.2 基本示例 84
3.3.3 高級用法 89
3.3.4 技術要點 95
3.4 Python操作第三方庫實現Google Analytics數據同步 96
3.4.1 安裝配置 96
3.4.2 基本示例 100
3.4.3 高級用法 104
3.4.4 技術要點 111
3.5 案例:某O2O企業(yè)離線數據同步案例 112
3.6 常見問題 114
第4章 消息隊列 117
4.1 消息隊列概述 117
4.1.1 消息隊列的核心概念 117
4.1.2 選擇消息隊列的3種技術應用場景 118
4.2 消息隊列的技術選型 119
4.2.1 常見的6種消息隊列技術 119
4.2.2 消息隊列技術選型的4個維度 121
4.2.3 消息隊列技術選型總結 123
4.3 Python操作RabbitMQ處理消息隊列服務 124
4.3.1 安裝配置 124
4.3.2 基本示例 125
4.3.3 高級用法 129
4.3.4 技術要點 131
4.4 Python操作Kafka處理消息隊列服務 132
4.4.1 安裝配置 132
4.4.2 基本示例 135
4.4.3 高級用法 138
4.4.4 技術要點 139
4.5 Python操作ZeroMQ處理消息隊列服務 140
4.5.1 安裝配置 140
4.5.2 基本示例 140
4.5.3 高級用法 146
4.5.4 技術要點 150
4.6 案例:利用消息隊列采集電商用戶行為數據 151
4.6.1 案例背景 151
4.6.2 主要技術 151
4.6.3 案例過程 152
4.6.4 案例小結 155
4.7 常見問題 156
第5章 關系數據庫 158
5.1 關系數據庫概述 158
5.1.1 關系數據庫的相關概念 158
5.1.2 使用關系數據庫的3種場景 158
5.2 關系數據庫的技術選型 159
5.2.1 常見的5種技術選型 159
5.2.2 關系數據庫選型的3個維度 161
5.2.3 關系數據庫技術選型總結 162
5.3 使用基于DB-API 2.0規(guī)范的PyMySQL操作MySQL數據庫 162
5.3.1 安裝配置 163
5.3.2 基本示例 163
5.3.3 高級用法 165
5.3.4 技術要點 169
5.4 使用基于ORM技術的SQLAlchemy操作PostgreSQL數據庫 170
5.4.1 安裝配置 170
5.4.2 基本示例 171
5.4.3 高級用法 175
5.4.4 技術要點 180
5.5 案例:某傳統(tǒng)零售企業(yè)基于關系數據庫的數據集市 181
5.5.1 企業(yè)背景 181
5.5.2 企業(yè)為什么選擇SQL Server作為數據集市 181
5.5.3 數據字典 181
5.5.4 應用場景 183
5.6 常見問題 184
第6章 NoSQL數據庫 186
6.1 NoSQL數據庫概述 186
6.1.1 NoSQL數據庫的相關概念 186
6.1.2 使用NoSQL數據庫的5種場景 187
6.2 不同類型NoSQL數據庫的技術選型 188
6.2.1 常見的3種鍵值數據庫技術選型 188
6.2.2 常見的3種文檔型數據庫的技術選型 188
6.2.3 常見的兩種列式存儲數據庫的技術選型 190
6.2.4 常見的兩種圖數據庫的技術選型 190
6.2.5 NoSQL數據庫技術選型的五大維度 191
6.2.6 NoSQL數據庫技術選型總結 192
6.3 使用Python操作HBase 193
6.3.1 安裝配置 193
6.3.2 基本示例 195
6.3.3 HBase應用過濾器進行復雜查詢 199
6.3.4 批量操作 201
6.3.5 技術要點 201
6.4 使用Python操作Redis 202
6.4.1 安裝配置 202
6.4.2 基本示例 203
6.4.3 使用HyperLogLog實現獨立IP計數器 210
6.4.4 Redis數據持久化 212
6.4.5 技術要點 213
6.5 使用Python操作ES 213
6.5.1 安裝配置 213
6.5.2 基本示例 215
6.5.3 批量加載文檔到ES+使用Kibana進行分析 220
6.5.4 技術要點 228
6.6 使用Python操作Neo4j 230
6.6.1 安裝配置 230
6.6.2 基本示例 231
6.6.3 APOC 234
6.6.4 技術要點 236
6.7 使用Python操作MongoDB 237
6.7.1 安裝配置 237
6.7.2 基本示例 237
6.7.3 文檔聚合與管道 239
6.7.4 技術要點 242
6.8 案例:某菜譜網站基于ES+Redis構建智能搜索推薦引擎 243
6.8.1 案例背景 243
6.8.2 為什么選擇ES+Redis 243
6.8.3 系統(tǒng)架構 244
6.8.4 相關要點 245
6.8.5 案例延伸 246
6.9 常見問題 246
第7章 批處理 247
7.1 批處理概述 247
7.1.1 批處理的基本特征 247
7.1.2 批處理的3類應用場景 248
7.2 批處理的技術選型 248
7.2.1 批處理的5種技術 248
7.2.2 批處理選型的8個技術因素 250
7.2.3 批處理選型總結 251
7.3 Python使用PyHive操作HQL進行批處理 252
7.3.1 安裝配置 252
7.3.2 基本示例 252
7.3.3 數據批量加載及處理 256
7.3.4 Hive函數 259
7.3.5 窗口 268
7.3.6 技術要點 272
7.4 PySpark操作DataFrame進行批處理 273
7.4.1 安裝配置 273
7.4.2 基本示例 273
7.4.3 常用Spark DataFrame操作示例 277
7.4.4 使用Spark MLlib + DataFrame進行特征工程 281
7.4.5 技術要點 282
7.5 案例:某B2C企業(yè)基于PySpark實現用戶畫像標簽的構建 283
7.6 常見問題 285
第8章 流處理 288
8.1 流處理概述 288
8.1.1 流處理的核心概念 288
8.1.2 流處理的3個特征 289
8.1.3 流處理的適用/不適用場景 289
8.2 流處理的依賴條件 290
8.2.1 流數據 290
8.2.2 流式應用 291
8.3 流處理的技術選型 291
8.3.1 流處理的3種技術 291
8.3.2 流處理選型的7個技術因素 295
8.3.3 流處理技術選型總結 295
8.4 Python操作Structured Streaming實現流處理 296
8.4.1 安裝配置 296
8.4.2 基本示例 298
8.4.3 高級用法 322
8.4.4 技術要點 328
8.5 案例:某B2C企業(yè)基于Structured Streaming實現實時話題熱榜統(tǒng)計 330
8.6 常見問題 331
第9章 圖計算 333
9.1 圖計算概述 333
9.1.1 圖計算的特征 333
9.1.2 圖計算的算法和應用場景 334
9.2 圖計算引擎的技術選型 335
9.2.1 圖計算的8種技術 335
9.2.2 圖計算選型的8個技術因素 338
9.2.3 圖計算選型總結 339
9.3 Python操作GraphFrames實現圖計算 341
9.3.1 安裝配置 341
9.3.2 構建圖 341
9.3.3 視圖分析 342
9.3.4 子頂點、子邊和子圖過濾 344
9.3.5 度分析 345
9.3.6 模體查找 346
9.3.7 圖持久化 348
9.3.8 廣度優(yōu)先搜索 348
9.3.9 短路徑搜索 349
9.3.10 連通分量和強連通分量 351
9.3.11 標簽傳播 351
9.3.12 通用網頁排名和個性化網頁排名 352
9.3.13 三角形計數 354
9.3.14 技術要點 355
9.4 案例:基于用戶社交行為的分析 355
9.5 常見問題 359
第10章 人工智能 361
10.1 人工智能概述 361
10.1.1 人工智能的4種應用場景 361
10.1.2 人工智能的12類常用算法介紹 362
10.2 人工智能的技術選型 366
10.2.1 常見的3種技術框架 366
10.2.2 人工智能選型的6個因素 368
10.2.3 人工智能選型總結 369
10.3 PySpark ML的應用實踐 370
10.3.1 準備數據 371
10.3.2 特征工程和處理 373
10.3.3 核心算法應用 375
10.3.4 Pipeline式應用 381
10.3.5 訓練和預測拆分及持久化操作 384
10.3.6 超參數優(yōu)化的