Spark实战第二版(涵盖Spark3.0)
Posted 登峰大数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark实战第二版(涵盖Spark3.0)相关的知识,希望对你有一定的参考价值。
如果您觉得作者翻译的内容有帮助,请分享给更多人。您的分享,是作者翻译的动力!
关于这本书
当我开始写这本书的时候,也就是你们现在读的这本书,Spark实战(第二版),我的目标是:
帮助Java社区的朋友使用Apache Spark,并且说明使用Spark,不需要学习Scala或Python。
解释Apache Spark、(大)数据工程和数据科学背后的关键概念,除了关系数据库和一些SQL之外,您不需要了解其他任何东西。
宣传Spark是一个为分布式计算和分析而设计的操作系统。
我相信在教授任何计算机科学知识时,都应该有大量的例子。书中的例子是学习过程中必不可少的一部分。我把它们设计得尽可能接近真实场景。我的数据集来自有质量缺陷的现实生活;它们不是理想的教科书数据集:“总是可以正常工作”。这就是为什么,当结合这些例子和数据集时,您将以一种比消毒的方式更实用的方式工作和学习。我把这些例子称为实验,希望你们能从中得到启发,并用它们来进行实验。
插图无处不在。“一图胜千言”这句名言为您省去了额外阅读的183,000字。
谁该读本书
将工作头衔与一本书联系起来是一项困难的任务,所以如果你的头衔是数据工程师、数据科学家、软件工程师或数据/软件架构师,你肯定会很高兴。如果你是一个企业架构师,嗯,你可能知道所有这些,就像企业架构师知道关于一切的一切,不是吗?更重要的是,如果你想收集更多关于这些主题的知识,这本书会很有帮助:
使用Apache Spark构建分析和数据管道:接入、转换和导出/发布数据。
不需要学习Scala或Hadoop就可以使用Spark:用Java学习Spark。
理解关系数据库和Spark之间的区别。
关于大数据的基本概念,包括在Spark环境中可能遇到的关键Hadoop组件。
Spark在企业架构中的位置。
在大数据环境中使用您现有的Java和RDBMS技能。
理解dataframe API。
通过在Spark中接入数据来集成关系数据库。
通过流收集数据。
了解这个行业的发展,以及为什么Spark是一个很好的选择。
理解和使用核心角色:DAAataFrame。
了解什么是弹性分布式数据集(RDDs),以及为什么不应该(再)使用它们。
理解如何与Spark交互。
了解Spark的各个组成部分:driver, executors, master and workers, Catalyst, Tungsten。
学习关键hadoop派生技术(如YARN或HDFS)的作用。
理解资源管理器(如YARN、Mesos和内置管理器)的角色。
以批处理模式和流方式从各种文件中接入数据。
使用SQL和Spark。
操作Spark提供的静态函数。
理解什么是不可变性以及它为什么重要。
使用Java用户自定义函数(udf)扩展Spark。
使用新的数据源扩展Spark。
将数据从JSON线性化,这样就可以使用SQL了。
在dataframe上执行聚合和联合。
使用用户定义聚合函数(UDAFs)扩展聚合。
理解缓存和检查点之间的区别,并提高Spark应用程序的性能。
导出数据到文件和数据库。
了解AWS、Azure、IBM Cloud、GCP和本地集群上的部署。
从CSV、XML、JSON、文本、Parquet、ORC和Avro文件中获取数据。
扩展数据源,并举例说明如何使用EXIF获取照片元数据,重点介绍数据源API v1。
在构建管道时使用带Spark的Delta Lake。
你将从这本书中学到什么?这本书的目的是教你如何在应用程序中使用Spark,或者为Spark构建特定的应用程序。我为数据工程师和Java软件工程师设计了这本书。当我开始学习Spark时,所有东西都是用Scala编写的,几乎所有文档都在官方网站上,Stack Overflow每隔几个月就会显示一次Spark问题。当然,文档声称Spark有一个Java API,但是高级示例很少。当时,我的团队成员对学习Spark,还是学习Scala感到困惑,管理层希望得到结果。我的团队成员是我写这本书的动力。
我假设您具有基本的Java和RDBMS知识。我在所有示例中使用Java 8,即使Java 11已经存在。
阅读本书不需要具备Hadoop知识,但是因为您将需要一些Hadoop组件(非常少),所以我将介绍它们。如果你已经知道Hadoop,你肯定会发现这本书令人耳目一新。您不需要任何Scala知识,因为这是一本关于Spark和Java的书。当我还是个孩子的时候(我必须承认,现在仍然如此),我读了很多连环画,介于漫画书和漫画小说之间。因此,我喜欢插图,在这本书中我有很多插图。图1显示了一个带有几个组件、图标和图例的典型图表。
图1 在本书的一个典型插图中使用的图例
本书是如何组织的
本书共分四部分和十八个附录。
第1部分给出Spark的关键内容。你将学习理论和一般概念,但不要绝望(现在);我提供了许多示例和图表。它读起来就像一本漫画书。
-
第1章是一个简单例子的全面介绍。您将了解Spark为什么是分布式分析操作系统。 -
第2章介绍了一个简单的Spark过程。 -
第3章介绍了dataframe的强大功能,它结合了Spark的API和存储能力。 -
第4章介绍延迟执行,比较Spark和RDBMS,并介绍了有向无环图(DAG)。 -
第5章和第6章是相关的:将构建一个小型应用程序,构建一个集群,并部署您的应用程序。第5章是关于构建一个小应用程序,而第6章是部署应用程序。
-
第7章描述了从文件中接入的数据:CSV、文本、JSON、XML、Avro、ORC和Parquet。每种文件格式都有自己的示例。 -
第8章介绍了从数据库中接入数据:数据将来自关系数据库和其他数据存储。 -
第9章是关于从自定义数据源接入任何东西。 -
第10章关注流数据。
-
第11章是关于众所周知的查询语言SQL。 -
第12章教你如何执行转换。 -
第13章将转换扩展到整个文档的层次。本章还解释了静态函数,这是Spark的许多重要方面之一。 -
第14章是关于使用用户定义函数扩展Spark的。 -
聚合也是一个众所周知的数据库概念,它可能是分析的关键。第15章介绍了聚合,包括Spark和自定义聚合。
-
第16章着重于优化技术:缓存和检查点。 -
第17章是关于将数据导出到数据库和文件的。本章还解释了如何使用Delta Lake,这是一个接近Spark内核的数据库。 -
第18章详细介绍了部署所需的参考架构和安全性。这绝对是少动手,但充满了关键信息。
关于代码
-
第6章使用第5章的代码。 -
第18章详细讨论了部署,没有代码。
-
书中所描述的实验是按章节编号的。因此,第12章的实验200在第12章第2节中有介绍。同样,第17章的第100号实验也在第17章的第1节中详细说明。 -
书中没有描述的实验以9开头,如900,910等等。900系列的实验正在增长:我还在不断增加。实验号不是连续的,就像基本代码中的行号一样。
第一部分 用实例来阐述晦涩的理论
以上是关于Spark实战第二版(涵盖Spark3.0)的主要内容,如果未能解决你的问题,请参考以下文章
《C++ 并发编程实战 第二版》:条件变量唤醒丢失与虚假唤醒
《TensorFlow实战Google深度学习框架(第二版)》学习笔记及书评