Spark大数据编程实用教程
上QQ阅读APP看书,第一时间看更新

1.6 如何快速掌握Spark

本节内容主要面向 Spark 初学者,特别是没有开发经验(基本上没有写过程序)的读者,介绍 Spark 的快速学习路线图,Spark 学习中要注意的地方,如何利用本书相关配套资源更高效地学习Spark以及初学者快速学习Spark的方法。

1.6.1 Spark学习的痛点

对初学者(特别是自学者)学习来说,Spark学习有以下两大痛点。

1.头绪太多,不知道从哪学

从 Spark 的技术栈可以看到,涉及的技术从操作系统到外部组件、Spark 框架、交互工具、编程语言,涉及多个层次,每个层次又包括多个技术和知识点,对初学者来说,可能只是对其中的部分技术有一些模糊的认识,并不会形成1-7图中那么全面、清晰的层次。

这样,就会导致学习的时候,到底是从哪开始?比如确定了先学习 Linux,那么 Linux的发行版又选择哪个好?Linux 的命令又需要学习哪些?如果要想学得全面,仅《鸟哥的Linux私房菜》系列书可能就够学1、2年的,那么又要学到哪个程度?又比如Scala语言,仅简化版的《快学 Scala》就有 300 多页,10 多章,又该从哪开始?学习哪些?学到什么程度?Spark框架除了Spark Core以外,还有GraphX、Streaming、Spark SQL和SparkR等,它们是否都要一个一个的学?还是只选其中几个学?如果学,那又该选择哪几个最好呢?

所以,在 Spark 初学者的道路上,处处都存在着选择,如何在纷繁复杂的路径中,选择一条较优的路径,对初学者来说,通常是很困难的事情。

2.处处掣肘,起步艰难

Spark 初学者在起步阶段会遇到各种各样的问题,例如,Linux 的各种权限问题、命令使用问题、Spark 环境构建的各种配置问题、Scala 学习中的各种语法问题、Spark 编程中的各种异常等,都是横亘在初学者面前的一座座大山。初学者往往费尽精力,解决了一个问题,结果又冒出了更多的问题,这种心力交瘁,看不到尽头的感觉在起步阶段十分常见。

1.6.2 Spark快速学习路线图

Spark 学习没有捷径,任何宣称不需要下功夫就能轻松掌握 Spark 的说法,都是不靠谱、不负责任的。这里提到的快速学习路线,可让读者付出更有效,少踩坑,少做无用功,但不管怎样,都需要下功夫,不断实践。

1.Spark快速学习路线图

Spark学习要区分以下两种情况。

●必须要学习的内容。对于这部分内容,从一开始就要把基础打好,必须牢固掌握。

● 可以后续再学的内容。对于这部分内容,只需要清楚其概念,心中有数就可以了,待到需要时,能迅速找到资料,确定学习方法,再快速自学。

基于上面的划分,列出Spark快速学习的路线图,如图1-8所示。

图1-8 Spark学习路线图

●图1-8中列出的内容属于必学部分;

●左侧列为要学习的知识模块,箭头方向表示学习顺序。

●右侧为每个知识模块对应的知识点和要求,或者说是学习完该模块后,要达到的目标。

2.注意事项(重要)

图1-8中的内容相对1.3节Spark技术栈中所列的技术做了大幅简化,这并不是说没有列出的内容不需要学习或不重要,而是说,学习时可以先按照上图进行系统学习,可以由易到难,快速构建一个最简的Spark知识体系。

这个最简 Spark 知识体系是学习后续 Spark 其他知识点模块的基础。一旦构建了这个知识体系,其他的 Spark 知识点,就可以根据需要参考本书,做针对性的学习。如果不使用上面的路线图,打乱顺序,多点出击,或者全盘包揽的话,实践证明效果往往很不理想。

1.6.3 Spark学习中的关键点

下面列出Spark学习中需要注意的点或原则,它们可以使得后续的学习更加高效。

●看到结果比明白原理更重要;

●动手比看书更重要;

●暂时理解不了的原理,或者找不到原因的问题,可以先放下,继续往后学;

●RDD、DataFrame和Dataset是Spark最重要的3类数据结构;

●RDD永远不会过时,它只是逐渐退居幕后;

●DataFrame和Dataset正在成为Spark与外界打交道的统一接口;

●结构化大数据处理在Spark中应用越来越多,Spark SQL越来越重要;

●各种数据格式转换、数据源的连接非常重要;

●SparkR、流数据处理、GraphX和MLlib可以在后续需要的时候再去学习。

1.6.4 利用本书相关资源高效学习Spark

本书提供了相当丰富的配套资源,这些资源按照 Spark 的学习阶段分为 3 类,如图 1-9所示,分别是Spark学习前置资源、随书资源和进阶资源,具体描述如下。

图1-9 本书配套资源图

●前置资源指本书学习前的配套资源,主要包括艾叔(本书主要作者)主讲的 VMware虚拟机、Linux、Shell 编程和 HDFS 免费课程,这些课程都是艾叔多年经验的总结,只讲最有用、使用最为频繁的知识点,因此每门课程的学习时间都不长,基于这些课程,初学者无须查阅其他资料,就可以快速打下Spark学习的基础;

● 随书资源是指本书学习中的配套资源,包括艾叔编写的《零基础快速入门 Scala》电子书、《Spark 大数据编程实践教程》、示例代码及数据、练习题及答案。这些资源可以帮助我们更快、更全面地掌握《Spark大数据编程实用教程》的内容;

●进阶资源是指本书学习中或学习后用于提升 Spark 编程水平的资源,包括艾叔主讲的两个企业级的实战项目课程《一键部署:基于 Docker 的 Hadoop 集群》和《IDEA+Spark 快速入门实战》,以及艾叔在编程方面的经验和总结,这些资源对加深对本书的理解,提升Spark编程实战能力,迅速累积项目经验非常有帮助。

1.随书资源的获取

随书资源是一个 rar 格式的压缩包,文件名是“Spark 大数据编程实用教程配套资料.rar”,该压缩包中的资料如表 1-1 所示,包括艾叔总结多年经验,专门为 Scala 编程初学者所编写的《零基础快速入门 Scala》电子书,本书的配套实践教程《Spark 大数据编程实践教程》、《课程练习及答案》和课程示例代码。

表1-1 本书配套资料包内容列表

2.前置资源、进阶资源以及其他资源的获取

前置资源可以在网易云课堂的“艾叔编程”中获取,获取方法如表1-2的第3项所示;进阶资源可以在51CTO学院网站搜索“文艾”获取,获取方法如表1-2的第4、5项所示。其他资源包括:作者微信号、本书公众号、大数据学习网站,获取方法如表 1-2 的第 1、2、6项所示。

表1-2 本书其他资源列表

1.6.5 本书所使用的软件和版本

学习本书时,各项软件请务必保持和表1-3中一致的版本。

表1-3 本书软件及版本表