Python在中小企业数字智能中的应用集成与开发实践
  • 推荐0
  • 收藏0
  • 浏览16

Python在中小企业数字智能中的应用集成与开发实践

宋天龙 张伟松 (作者)  符隆美 (责任编辑)

  • 书  号:9787121453038
  • 出版日期:2023-05-01
  • 页  数:444
  • 开  本:16(240*190)
  • 出版状态:上市销售
  • 维护人:符隆美
《Python大数据架构全栈开发与应用》介绍了如何使用Python实现企业级的大数据全栈式开发、设计和编程工作,涉及的知识点包括数据架构整体设计、数据源和数据采集、数据同步、消息队列、关系数据库、NoSQL数据库、批处理、流处理、图计算、人工智能、数据产品开发。
《Python大数据架构全栈开发与应用》既深入浅出地介绍了不同技术组件的基本原理,又通过详细对比介绍了如何根据不同场景选择最佳实践技术方案,并通过代码实操帮助读者快速掌握常用技术的应用过程,最后通过项目案例介绍了如何将所学知识应用于实际业务场景中。
涉及数据架构整体设计、数据源和数据采集、数据同步、消息队列、关系数据库、NoSQL数据库、批处理、流处理、图计算、人工智能、数据产品开发等方面
宋天龙,触脉咨询副总裁、合伙人。负责创新型业务的架构和方案设计、产品与技术研发、数据团队建设及管理。
张伟松,现就职于埃森哲,担任数据架构师职位。在大数据、数据分析、云计算等领域有多年的实践经验,并拥有阿里云、谷歌云等多项专业认证。
前言
为什么要写这本书
在企业技术开发实践中,往往存在众多技术栈。开发者可根据开发需求,选择不同技术栈及技术栈的组合,以快速、高效、稳健地开发应用程序和系统。
在众多技术栈中,Python由于拥有众多独特优势,已经成为事实上的核心开发语言之一。围绕Python的开发生态、组件、第三方库也异常丰富,因此它能够适应几乎所有的开发需求和场景。
Python技术栈的独特优势
开源特性。开源意味着可以应用于任何用途且无须付费,包括Python自身,以及第三方库、组件等。
多平台支持。Python支持Windows、Linux、macOS等多种系统和平台,并且是Linux和UNIX系统的预置语言。这种特性对跨系统、跨环境、跨应用、异构环境下的开发、迁移、部署等工作至关重要。
高效的开发效率。Python语言语法简单、优美,因此更加易于开发。在相同的功能需求下,Python的开发效率非常高,这意味着在相同时间内,Python可以完成更多的开发项目。
数据科学与人工智能生态。Python拥有众多的数据科学和人工智能框架、系统、库,这使得它成为最受欢迎的数据科学工作语言之一。
胶水特性。从功能上看,Python可以开发任何应用程序,但这并不意味着Python在所有开发场景下都是最优选择。而Python可以通过多种API、集成库来连接、调用不同的语言、系统和开发框架,这使得Python开发者可以在最合适的场景下选择最合适的技术组件,如统计工作调用R语言、使用PySpark在Spark框架上开发大数据应用等。
Python的最佳实践和应用场景
数据科学和人工智能。在数据科学和人工智能领域,Python几乎是最流行、工业界使用最广泛的开发语言。除此之外,几乎没有其他选择。例如,TensorFlow、PyTorch等深度学习框架就是基于Python开发实现封装的。
大数据开发。企业中流行的大数据框架,如Hadoop、Spark、Flink等均提供了Python API,这使得Python开发者可以通过Python程序实现大数据系统和应用的开发,如使用Spark开发推荐系统、精准营销投放系统等。
数据分析。数据分析、统计学等是企业数据化运营必不可少的技术支撑。Python的Pandas、SciPy、Statistics、Bokeh、PyECharts、Matplotlib等库提供了众多数据统计分析、数据处理、数据可视化等功能,简单易用、美观大方。
IT运维。Python可以通过多种方式与系统交互,基于众多的Python第三方库提供了丰富的、针对集群的环境配置、程序部署、持续集成、测试等功能,如Ansible的自动化脚本、psutil的服务器监控等。另外,像AWS等云服务商也都提供了Python相关库开发来管理云服务和基础设置。
Web开发。在Web开发领域,Django、Flask是使用较广泛的开发框架,只需少量代码即可快速构建Web应用服务。
网络爬虫。在网络爬虫方面,Python提供的Requests、Httpx、Scrapy、Pyspider等众多HTTP库及分布式爬虫框架可以满足多种数据抓取需求。配合Python的多线程等工作模式,抓取效率非常高。
本书特色定位
在图书市场,已经出版了众多关于Python的技术类图书,但大多数都在介绍技术细节,如框架、入门代码、参数、简单示例等,往往让普通的开发者只关注技术实现和细节,即如何编程及如何更好地编程。长此以往就会出现“一叶障目,不见泰山”的问题。
在高级开发者和架构师视角中,他们首先关注的是场景和需求是什么,什么框架和组件最合适,如何实现技术迭代和升级,如何实现应用扩展和二次开发,如何平衡技术性能、稳定性、开发效率、运维便利性、技术趋势及成本等。本书的核心价值就在于此。
我希望开发者既拥有全面的视野和格局,又拥有技术编程和开发落地的本领。这也是写作本书的初衷。
读者对象
高等院校的在校学生。在出校门前就掌握Python的核心技能能帮助学生在激烈的职场竞争中脱颖而出。尤其在从事与大数据、数据分析、数据学习和人工智能相关的工作时,Python是必须要掌握的技能。
数据运营人员。企业的数据运营人员包括数据专员、数据分析师、DBA、业务分析师等。在数据运营中,往往涉及大量的数据收集、处理、分析等工作,使用Python能满足更多的场景、更大的数据量级、更复杂的数据格式的处理需求。
Python开发者。作为一名Python开发者,拥有全栈技能不仅能帮助自己提升技术水平/竞争力,还能在职业成长路上更好地规划和设计未来的成长曲线;借助Python实现大数据和人工智能的全栈式开发,未来会更加光明。
希望转型为Python开发者的读者。如果您以前已经熟练使用Java、C、.NET甚至PHP等语言开发其他应用程序和框架,相信您只需几个小时就能熟练使用Python的基本语法。要了解Python全栈式、全生态的开发技术,本书会助您一臂之力。
如何阅读本书
本书介绍了如何使用Python实现企业级的大数据全栈式开发、设计和编程工作,涉及数据架构整体设计、数据源和数据采集、数据同步、消息队列、关系数据库、NoSQL数据库、批处理、流处理、图计算、人工智能、数据产品开发核心技术领域。从工作流程上看,这些内容是按照企业数据工作流程编写的,因此,如果您之前没有接触过完整的数据工作流程,推荐您从头开始学习和阅读本书。
如果您已经对企业级的数据流程非常熟悉,那么可以直接选择对应章节,查看所需的知识内容。需要注意的是,对于相同的内容,不同章节不会重复介绍,因此您可能需要翻阅前面对应的章节(书中均会标注)。
本书每章的知识脉络都是按照基本概念、应用场景、技术介绍、技术选型对比、代码实操、项目案例和常见问题的思路组织的。
勘误和支持
由于作者水平有限,加之撰稿时间有限,书中难免会存在疏漏,恳请读者批评指正。读者可通过以下途径联系并反馈建议或意见。
微信沟通,即时通信:本书已经建立讨论群,读者可先添加我的个人微信(TonySong2013)反馈问题,同时我会将读者添加到本书的讨论群中。
电子邮件:发送E-mail到517699029@qq.com。
网站留言:在“触脉咨询”网站或公众号留言。
致谢
在本书的写作过程中,我得到了来自多方的指导、帮助和支持。
首先,感谢王晓东先生和柳辉先生。王晓东先生和柳辉先生作为“触脉咨询”的创始人,在企业高速发展期间,力邀我加入并委以重任,同时在业务探索中给予了极大的信任和试错空间,这使我具备了写作本书的知识基础、项目经验及实战沉淀。
其次,感谢在“触脉咨询”新业务探索过程中与我一起奋斗的张默宇、张璐、许曼、白迪、张伟松等伙伴。本书的写作离不开大家一起参与、实施和策划的项目经验,特别是张伟松,还参与了本书大量内容的写作。因为有你们,我才有更大的想象空间,以及更好的、可实现的未来。
再次,感谢电子工业出版社的符隆美老师。符隆美老师不仅邀请我来写作此书,并为此提供了方向和思路指导。另外,感谢全程参与审核、校对等工作的出版社的其他老师,以及其他在背后默默给予支持的出版工作者,你们的辛勤付出保证了本书的顺利出版。
最后,感谢我的家人和朋友,特别是我的夫人姜丽女士,是她在我写书的这段时间把家里的一切料理得井井有条,使得我有精力完成本书的写作。
谨以此书献给热爱数据工作并为之奋斗的朋友,愿大家身体健康、生活美满、事业有成。

宋天龙(Tony Song)

目录

第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 超参数优化的实现 386
10.4 案例:某B2C企业推荐系统的搭建与演进 387
10.4.1 总体设计思想 388
10.4.2 PoC:验证想法 389
10.4.3 推荐系统的起步 390
10.4.4 完善线上与线下推荐 391
10.4.5 在线实时计算 393
10.5 常见问题 394
第11章 数据产品开发 398
11.1 数据产品开发概述 398
11.2 数据产品的路线选型 399
11.3 Python数据产品自研的技术选型 400
11.4 基于Django的产品开发 401
11.4.1 安装配置 402
11.4.2 基本示例 402
11.4.3 Django REST Framework 410
11.4.4 技术要点 416
11.5 案例:某企业基于Django构建内部用户画像标签产品 420
11.6 常见问题 421
附录A Docker安装使用 422
附录B 使用EMR搭建Hadoop大数据集群 426

读者评论