Spark 什么是RDD
RDD(Resilient Distributed Dataset)是Spark的核心抽象概念。它是一个元素的集合,分布在集群的节点上,以便我们可以对其执行各种并行操作。
有两种方法可以创建RDD:
- 在驱动程序中并行化现有数据
- 引用外部存储系统中的数据集,如共享文件系统、HDFS、HBase或任何提供Hadoop InputFormat的数据源
并行化集合
要创建并行化集合,可以在驱动程序中使用 SparkContext的 parallelize方法调用现有集合。集合的每个元素都会被复制,形成一个可以并行操作的分布式数据集。
val info = Array(1, 2, 3, 4)
val distinfo = sc.parallelize(info)
现在,我们可以对分布式数据集(distinfo)进行并行操作,例如distinfo.reduce((a, b) => a + b)。
外部数据集
在Spark中,分布式数据集可以从任何由Hadoop支持的存储源创建,例如HDFS、Cassandra、HBase甚至我们的本地文件系统。Spark支持文本文件 SequenceFiles 和其他类型的Hadoop InputFormat 。
SparkContext 的textFile方法可用于创建RDD的文本文件。此方法接受文件的URI(可以是机器上的本地路径或hdfs://),然后读取文件的数据。
现在,我们可以通过数据集操作来操作数据,比如我们可以使用map和reduce操作来计算所有行的长度之和,如下所示:data.map(s => s.length).reduce((a, b) => a + b)。