RDD以分区(partition)的形式分布在集群中的多个机器上,每个分区代表了数据集的一个子集。分区定义了Spark中数据的并行单位。Spark框架并行处理多个分区,一个分区内的数据对象是顺序处理的。
创建RDD的几种方法
- 在本地对象集合上调用SparkContext的parallelize方法。
示例如下:
第一个参数代表待并行化的对象集合,第二个参数代表分区的个数。当要对一个分区内的对象进行计算时,Spark从驱动程序里获取对象集合的一个子集。 - 在分布式文件系统(如HDFS)上的文件或目录上创建RDD,可以给textFile方法传入文件或目录的名称。
示例如下:
- 如果Spark在本地模式下运行,可以用textFile方法访问本地文件系统上的路径。
如果输入是目录而不是单个文件,Spark会把该目录下所有的文件作为RDD的输入。但是实际上,Spark并没有将数据读取到客户段机器或集群内存中。当需要对发呢去内的对象进行计算时,Spark才会读入输入文件的某个部分(也称“切片”),然后应用其他RDD定义的后续转换操作(过滤和汇总等)。 - 另外,RDD也可由其他RDD转换来,等。