第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 传统数仓支撑的数据架构 18
1.4.3 传统大数据架构 20
1.4.4 流式大数据架构 22
1.4.5 流批一体大数据架构 23
1.4.6 存算分离的流批一体大数据架构 25
1.5 案例:某B2B企业的数据架构选型 26
1.5.1 企业背景 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 企业内部流量数据采集技术选型 33
2.2.1 企业内部流量数据采集常用的技术 34
2.2.2 内部流量数据采集技术选型的因素 37
2.2.3 内部流量数据采集技术选型总结 39
2.3 企业外部互联网数据采集技术选型 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电商企业的数据源结构 69
2.6.1 企业背景 69
2.6.2 业务系统 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企业离线数据同步案例 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规范的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 案例:某传统零售企业基于关系数据库的数据集市 181
5.5.1 企业背景 181
5.5.2 企业为什么选择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 系统架构 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企业基于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企业基于Structured Streaming实现实时话题热榜统计 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 广度优先搜索 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 超参数优化的