BillChambers & Matei Zaharia
Spark:权威指南
大数据处理变得简单
Bill Chambers and Matei Zaharia
Spark:权威指南
比尔钱伯斯和马泰扎哈里亚
版权所有©2018 Databricks。版权所有。印在
美利坚合众国。
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
可以购买O'Reilly书籍用于教育,商业或促销用途。在线版本也可用于大多数标题(http:/
/oreilly.com/safari)。有关更多信息,请联系我们的公司/机构销售部门:800-998-9938或
corporate@oreilly.com。
Editor: Nicole Tache
制作编辑:Justin Billing
Copyeditor: Octal Publishing, Inc., Chris Edwards, and Amanda Kersey
Proofreader: Jasmine Kwityn
Indexer: Judith McConville Int
erior Designer: David Futato
封面设计师:Karen Montgomery
插画家:Rebecca Demarest
2018年2月:第一版
第一版的修订历史
2018-02-08:首次发布
See http://oreilly.com/catalog/errata.csp?isbn=9781491912218 for release details.
O'Reilly徽标是O'Reilly Media,Inc。的注册商标.Spark:The Definitive Guide,封面图片和
相关商业外观是O'Reilly Media,Inc。的商标.Apache,Spark和Apache Spark是Apache软件
基金会。
虽然出版商和作者使用诚意努力确保本作品中包含的信息和说明准确无误,但出版商和
作者对错误或遗漏不承担任何责任,包括但不限于因使用或依赖这项工作。使用本作品
中包含的信息和说明,风险自负。如果此作品包含或描述的任何代码示例或其他技术受
开源许可或其知识产权的约束
其他人,您有责任确保您的使用符合此类许可和/或权利。
978-1-491-91221-8
[M]
微信号:changqingt27
验证:好书
欢迎交流好书,或者粗译提高效率
前言
欢迎阅读第一版Spark:The Definitive Guide!我们很高兴今天为您带来最完整的Apac
he Spark资源,特别关注Spark 2.0中引入的新一代Spark API。
Apache Spark目前是最受欢迎的大规模数据处理系统之一,其中包含多种编程语言的API
以及丰富的内置和第三方库。
虽然该项目已存在多年 - 首先是2009年在加州大学伯克利分校开始的研究项目,然后是
自2013年以来的Apache软件基金会 - 开源社区正在继续构建更强大的API和高级库,而不
是Spark,所以关于这个项目还有很多东西要写。我们决定写这本书有两个原因。首先,
我们希望提供有关Apache Spark的最全面的书籍,涵盖所有基本用例以及易于运行的示例。
其次,我们特别想探索在Apache Spark 2.0中最终确定的更高级别的“结构化”API - 即Data
Frames,Datasets,Spark SQL和Structured Streaming-- Spark上的旧书并不总是包含在内。
在本序言中,我们将向您介绍一下我们的背景,并解释本书的用途以及我们如何组织这
些材料。我们还要感谢帮助编辑和审阅本书的众多人,没有他们就不可能。
关于作者
这本书的作者都参与了Apache Spark很长一段时间,所以我们很高兴能够为你带来这本书。
Bill Chambers于2014年开始在几个研究项目中使用Spark。目前,Bill是Databricks的产品
经理,他专注于使用户能够编写各种类型的Apache Spark应用程序。比尔还定期发布有关
Spark的博客,并就此主题在会议和聚会上发表演讲。Bill拥有加州大学伯克利分校信息管
理与系统硕士学位。
Matei Zaharia在加州大学伯克利分校担任博士生期间于2009年开始了Spark项目。Matei与
其他伯克利研究人员和外部合作者一起设计核心Spark API并发展Spark社区,并继续参与
结构化API和结构化流媒体等新举措。2013年,Matei和Berkeley Spark团队的其他成员共
同创立了Databricks,以进一步发展开源项目,并围绕它提供商业产品。今天,Matei继续
担任Databricks的首席技术专家,并在斯坦福大学担任计算机科学助理教授,在那里他研
究大型系统和AI。Matei于2013年获得加州大学伯克利分校的计算机科学博士学位。
本书适用于谁
我们主要为希望使用Apache Spark的数据科学家和数据工程师设计了这本书。这两个角色
的需求略有不同,但实际上,大多数应用程序开发都涵盖了两者,因此我们认为这两种
材料在两种情况下都很有用。具体来说,在我们看来,数据科学家的工作量更侧重于交
互式查询数据以回答问题和构建统计模型,而数据工程师的工作重点是编写可维护的,
可重复的生产应用程序 - 要么在实践中使用数据科学家的模型,要么只是准备数据以进
行进一步分析(例如,构建数据摄取管道)。
但是,我们经常看到Spark这些角色模糊不清。例如,数据科学家能够在没有太多麻烦的
情况下打包生产应用程序,数据工程师使用交互式分析来理解和检查他们的数据以构建
和维护管道。
虽然我们试图提供科学家和工程师开始所需的所有数据,但有些事情我们在本书中没有
空间可以关注。首先,本书不包括对您可以在Apache Spark中使用的一些分析技术的深入
介绍,例如机器学习。相反,我们将向您展示如何使用Spark中的库来调用这些技术,假
设您已经拥有机器学习的基本背景知识。存在许多完整的独立书籍以正式详细介绍这些
技术,因此如果您想了解这些领域,我们建议您从这些书籍开始。其次,本书更侧重于
应用程序开发而不是操作和管理(例如,如何管理具有数十个用户的Apache Spark集群)。
尽管如此,我们试图在监测,调试,本书的第五和第六版帮助工程师有效地运行应用程
序并处理日常维护。最后,本书不太重视Spark特有的RDD和DStream中较旧的低级API,
而是使用更新的更高级别的结构化API来引入大多数概念。因此,如果您需要维护旧的R
DD或DStream应用程序,本书可能不是最合适的,但应该是编写新应用程序的一个很好
的介绍。
本书中使用的约定
本书使用以下印刷约定:
斜体
表示新术语,URL,电子邮件地址,文件名和文件扩展名。
恒定宽度
用于程序列表,以及段落内部,用于引用程序元素,如变量或函数名称,数据库,数
据类型,环境变量,语句和关键字。
恒定宽度粗体
显示应由用户按字面输入的命令或其他文本。
等宽斜体
显示应使用用户提供的值替换的文本或由上下文确定的值。
此元素表示提示或建议。
该元素表示一般性说明。
此元素表示警告或警告。
使用代码示例
小费
注意
警告
我们非常高兴能够设计这本书,以便所有代码内容都可以在真实数据上运行。我们使用
Databricks笔记本编写了整本书,并在GitHub上发布了数据和相关资料。这意味着您可以
在跟随时运行和编辑所有代码,或将其复制到您自己的应用程序中的工作代码中。
我们尽可能地使用真实数据来说明在构建大规模数据应用程序时遇到的挑战。最后,我
们还在本书的GitHub存储库中包含了几个较大的独立应用程序,例如在文本中显示内联
没有意义。
当我们根据Spark的进展更新时,GitHub存储库将仍然是一个活文档。一定要关注那里的
更新。
这本书是为了帮助你完成工作。通常,如果本书提供了示例代码,您可以在程序和文档中
使用它。除非您复制了大部分代码,否则您无需与我们联系以获得许可。例如,编写使用
本书中几个代码块的程序不需要许可。出售或分发O'Reilly书籍中的示例CD-ROM需要获
得许可。通过引用本书并引用示例代码来回答问题不需要许可。
将本书中的大量示例代码合并到产品文档中需要获得许可。