本书介绍了如何使用 Python 实现企业级的大数据全栈式开发、设计和编程工作,涉及的知识点包括数据架构整体设计、数据源和数据采集、数据同步、消息队列、关系数据库、NoSQL 数据库、批处理、流处理、图计算、人工智能、数据产品开发。 本书既深入浅出地介绍了不同技术组件的基本原理,又通过详细对比介绍了如何根据不同场景选择最佳实践技术方案,并通过代码实操帮助读者快速掌握常用技术的应用过程,最后通过项目案例介绍了如何将所学知识应用于实际业务场景中。
宋天龙,触脉咨询副总裁、合伙人。负责创新型业务的架构和方案设计、产品与技术研发、数据团队建设及管理。张伟松,现就职于埃森哲,担任数据架构师职位。在大数据、数据分析、云计算等领域有多年的实践经验,并拥有阿里云、谷歌云等多项专业认证。
第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抓取数据并写入Sqlite45
2.4.1 安装配置45
2.4.2 基本示例46
2.4.3 高级用法47
2.4.4 技术要点53
2.5 使用Scrapy+XPath抓取数据并写入MongoDB54
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操作HBase193
6.3.1 安装配置193
6.3.2 基本示例195
6.3.3 HBase应用过滤器进行复杂查询199
6.3.4 批量操作201
6.3.5 技术要点201
6.4 使用Python操作Redis202
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操作ES213
6.5.1 安装配置213
6.5.2 基本示例215
6.5.3 批量加载文档到ES+使用Kibana进行分析220
6.5.4 技术要点228
6.6 使用Python操作Neo4j230
6.6.1 安装配置230
6.6.2 基本示例231
6.6.3 APOC234
6.6.4 技术要点236
6.7 使用Python操作MongoDB237
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+Redis243
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 超参数优化的