前言 党的二十大指出“实践没有止境,理论创新也没有止境”。随着互联网技术的快速发展,各种数字设备、传感器、物联网设备等在全球范围内产生了海量的数据。这些数据以几何速度爆发性增长,给传统的数据处理方式带来了前所未有的挑战。如何满足大规模数据处理的需求,成为了一个热门的研究课题,基于这种需求,人们需要新的技术来处理海量数据。 Spark提供了快速、通用、可扩展的大数据处理分析引擎,有效地解决了海量数据的分析、处理问题,因此基于Spark的各种大数据技术得到了广泛应用和普及。自Spark项目问世以来,Spark生态系统不断壮大,越来越多的大数据技术基于Spark进行开发和应用,在国内外各企业中得到了广泛应用,对于要往大数据方向发展的读者而言,学习Spark是一个不错的选择。 在开发Spark程序的过程中,选择合适的编程语言对于提高开发效率和代码质量至关重要。虽然Spark支持多种编程语言,包括Java、Scala和Python,但是Python语言在Spark开发中的应用越来越受欢迎。其原因在于Python语言在大数据和机器学习领域有着广泛的应用。许多机器学习框架和库,如Scikitlearn、TensorFlow和PyTorch,都提供了Python的API。因此,使用Python语言开发Spark程序可以更方便地整合大数据处理和机器学习任务,使得开发者能够更轻松地构建复杂的数据处理和分析流水线。 本书基于Spark 3.x和Python 3.x,循序渐进地介绍了Spark的相关知识以及Spark生态体系一些常用的组件和开源大数据项目。本书共8章,具体如下。 第1章主要介绍什么是Spark,以及不同模式部署Spark的方式,并通过PySpark和PyCharm开发Spark程序。 第2、3章主要讲解如何使用Spark的两个组件Spark RDD和Spark SQL进行数据处理,并利用这两个组件操作不同的数据源。 第4章主要讲解如何使用Spark Streaming对数据进行实时处理。 第5章主要介绍Spark生态体系常用开源大数据项目的原理和使用,并利用Kafka实现消息的生产和消费。 第6、7章主要讲解如何使用Spark的两个组件Structured Streaming和Spark MLlib,并利用这两个组件实现实时处理和通过模型推荐数据。 第8章通过一个完整的实战项目,让读者能够灵活地运用Spark及其生态系统的开源大数据项目,具备开发简单项目的能力。 在学习过程中,如果读者在理解知识点的过程中遇到困难,建议不要纠结于某个地方,可以先往后学习。通常来讲,通过逐渐深入的学习,前面不懂和疑惑的知识点也就能够理解了。在学习编程和部署环境的过程中,一定要多动手实践,如果在实践的过程中遇到问题,建议多思考,厘清思路,认真分析问题发生的原因,并在问题解决后及时总结。 本书配套服务 为了提升您的学习或教学体验,我们精心为本书配备了丰富的数字化资源和服务,包括在线答疑、教学大纲、教学设计、教学PPT、教学视频、测试题、源代码等。通过这些配套资源和服务,我们希望让您的学习或教学变得更加高效。请扫描下方二维码获取本书配套资源和服务。 致谢 本书的编写和整理工作由江苏传智播客教育科技股份有限公司完成。全体编写人员在编写过程中付出了辛勤的汗水,此外,还有很多人员参与了本书的试读工作并给出了宝贵的建议,在此向大家表示由衷的感谢。 意见反馈 尽管我们尽了最大的努力,但书中难免会有不妥之处,欢迎各界专家和读者朋友提出宝贵意见。您在阅读本书时,如果发现任何问题或有不认同之处,可以通过电子邮件与我们取得联系。请发送电子邮件至itcast_book@vip.sina.com。 黑马程序员 2025年1月于北京