
第3章 Spark上的RDD编程
本书是Spark SQL入门书籍,重点讲述的是如何利用Spark SQL (类似传统的SQL查询)在分布式平台上轻松便捷地处理结构化数据集。
对于Spark平台的初学者来说,首先应该了解Spark对数据的核心抽象——弹性分布式数据集(Resilient Distributed Dataset,RDD)及RDD编程基础,进而学习Spark处理某些特定问题的特定模块,包括Spark SQL(结构化数据集处理)、Spark Streaming(流计算)、MLlib(机器学习)、GraphX(图计算)。
学RDD有什么好处?
RDD API是Spark上处理数据的最基本编程方式。
RDD是Spark的核心,通过熟悉RDD编程,可看出分布式数据集在Spark多个节点分阶段(stage)并行计算的实质,即每个节点按照Spark任务执行计划的调度有序在每个节点分别计算结果,最后一步步按照调度器的调度将结果合并,将结果返回至Spark客户端,而Spark为程序员提供的便利就在于此,隐藏Spark底层各节点通信、协调、容错细节,成功地让程序员在Spark上采用类似往常单机编程那样的模式,就可以轻松操控整个集群进行数据挖掘。
什么是RDD?
RDD即弹性分布式数据集(Resilient Distributed Datasets),是Spark对数据的核心抽象,也就意味着在Spark上进行数据挖掘首先需要将待处理数据源转化成RDD,在此RDD上进行操作。
何为对数据的核心抽象?即数据组织、处理基本单位,在Spark中如果不引入高级模块,包括Spark SQL(结构化数据集处理)、Spark Streaming(流计算)、MLlib(机器学习)、GraphX(图计算),那么在Spark中,对数据的所有操作不外乎创建RDD、转化已有RDD以及调用RDD操作(API)进行求值,而在这一切背后,Spark会自动将RDD中的数据分发到集群个节点上,并将操作并行化执行。
RDD是Spark的重要组成部分,加深对于RDD的学习与理解,有利于理解分布式计算的实质以及Spark计算框架的实现。