Spark学习笔记 --- RDD的创建
2017-03-15 14:09
211 查看
Spark所有的操作都围绕弹性分布式数据集(RDD)进行,这是一个有容错机制并可以被并行操作的元素集合,
具有只读、分区、容错、高效、无需物化、可以缓存、RDD依赖等特征。
目前有两种类型的基础RDD:
并行集合(Parallelized Collections):接收一个已经存在的Scala集合,然后进行各种并行计算。
Hadoop数据集(Hadoop Datasets) :在一个文件的每条记录上运行函数。只要文件系统是HDFS,
或者hadoop支持的任意存储系统即可。
这两种类型的RDD都可以通过相同的方式进行操作,从而获得子RDD等一系列拓展,形成lineage血统关系图。
(1). 并行化集合
并行化集合是通过调用SparkContext的parallelize方法,在一个已经存在的Scala集合上创建的(一个Seq对象)。
集合的对象将会被拷贝,
创建出一个可以被并行操作的分布式数据集。例如,下面的解释器输出,演示了如何从一个数组创建一个并行集合。
例如:
val rdd = sc.parallelize(Array(1 to 10)) 根据能启动的executor的数量来进行切分多个slice,每一个slice启动一个Task来进行处理。
val rdd = sc.parallelize(Array(1 to 10), 5) 指定了partition的数量
(2). Hadoop数据集
Spark可以将任何Hadoop所支持的存储资源转化成RDD,如本地文件(需要网络文件系统,所有的节点都必须能访问到)、HDFS、Cassandra、HBase、Amazon S3等,Spark支持文本文件、SequenceFiles和任何Hadoop InputFormat格式。
a). 使用textFile()方法可以将本地文件或HDFS文件转换成RDD
支持整个文件目录读取,文件可以是文本或者压缩文件(如gzip等,自动执行解压缩并加载数据)。如textFile(”file:///dfs/data”)
textFile()可选第二个参数slice,默认情况下为每一个block分配一个slice。用户也可以通过slice指定更多的分片,但不能使用少于HDFS block的分片数。
b). 使用wholeTextFiles()读取目录里面的小文件,返回(用户名、内容)对
c). 使用sequenceFile[K,V]()方法可以将SequenceFile转换成RDD。SequenceFile文件是Hadoop用来存储二进制形式的key-value对而设计的一种平面文件(Flat File)。
d). 使用SparkContext.hadoopRDD方法可以将其他任何Hadoop输入类型转化成RDD使用方法。一般来说,HadoopRDD中每一个HDFS block都成为一个RDD分区。
此外,通过Transformation可以将HadoopRDD等转换成FilterRDD(依赖一个父RDD产生)和JoinedRDD(依赖所有父RDD)等。
具有只读、分区、容错、高效、无需物化、可以缓存、RDD依赖等特征。
目前有两种类型的基础RDD:
并行集合(Parallelized Collections):接收一个已经存在的Scala集合,然后进行各种并行计算。
Hadoop数据集(Hadoop Datasets) :在一个文件的每条记录上运行函数。只要文件系统是HDFS,
或者hadoop支持的任意存储系统即可。
这两种类型的RDD都可以通过相同的方式进行操作,从而获得子RDD等一系列拓展,形成lineage血统关系图。
(1). 并行化集合
并行化集合是通过调用SparkContext的parallelize方法,在一个已经存在的Scala集合上创建的(一个Seq对象)。
集合的对象将会被拷贝,
创建出一个可以被并行操作的分布式数据集。例如,下面的解释器输出,演示了如何从一个数组创建一个并行集合。
例如:
val rdd = sc.parallelize(Array(1 to 10)) 根据能启动的executor的数量来进行切分多个slice,每一个slice启动一个Task来进行处理。
val rdd = sc.parallelize(Array(1 to 10), 5) 指定了partition的数量
(2). Hadoop数据集
Spark可以将任何Hadoop所支持的存储资源转化成RDD,如本地文件(需要网络文件系统,所有的节点都必须能访问到)、HDFS、Cassandra、HBase、Amazon S3等,Spark支持文本文件、SequenceFiles和任何Hadoop InputFormat格式。
a). 使用textFile()方法可以将本地文件或HDFS文件转换成RDD
支持整个文件目录读取,文件可以是文本或者压缩文件(如gzip等,自动执行解压缩并加载数据)。如textFile(”file:///dfs/data”)
textFile()可选第二个参数slice,默认情况下为每一个block分配一个slice。用户也可以通过slice指定更多的分片,但不能使用少于HDFS block的分片数。
b). 使用wholeTextFiles()读取目录里面的小文件,返回(用户名、内容)对
c). 使用sequenceFile[K,V]()方法可以将SequenceFile转换成RDD。SequenceFile文件是Hadoop用来存储二进制形式的key-value对而设计的一种平面文件(Flat File)。
d). 使用SparkContext.hadoopRDD方法可以将其他任何Hadoop输入类型转化成RDD使用方法。一般来说,HadoopRDD中每一个HDFS block都成为一个RDD分区。
此外,通过Transformation可以将HadoopRDD等转换成FilterRDD(依赖一个父RDD产生)和JoinedRDD(依赖所有父RDD)等。
相关文章推荐
- Spark学习笔记(三)-RDD(弹性分布式数据集)
- Spark学习笔记四(RDD Persistency)
- spark学习笔记之一:RDD的五大特性
- Spark2.x学习笔记:11、RDD依赖关系与stage划分
- maven学习笔记:使用eclipse的maven插件创建scala_spark项目
- Spark学习笔记之SparkRDD
- Spark学习笔记 --- 什么是RDD
- maven学习笔记:命令行模式创建java_spark项目并运行示例程序
- Spark学习笔记——RDD编程
- Spark学习笔记2:RDD编程
- 通过wordCount实战详解Spark RDD创建 -- (视频笔记)
- Spark RDD Action 详解---Spark学习笔记8
- spark RDD解密学习笔记
- 第14课:spark RDD解密学习笔记
- maven学习笔记:使用eclipse的maven插件创建java_spark项目
- Spark学习笔记二 RDD
- spark源码阅读笔记RDD(七) RDD的创建、读取和保存
- spark学习笔记(3)spark核心数据结构RDD
- Spark2.x学习笔记:3、 Spark核心概念RDD
- maven学习笔记:命令行模式创建scala_spark项目并运行程序