认识RDD

一、什么是RDD?
官方说法:
RDD:弹性分布式数据集,是Spark最核心的数据结构。有分区机制,所以可以分布式进行处理。有容错机制,通过RDD之间的依赖关系来恢复数据。

说白了RDD就是spark的一种特有集合,只不过这个集合它有分区属性,通过分区可以实现并行化计算,从而实现了spark高效处理数据的重要原因之一,此外RDD之间还存在着一种父子依赖关系,就向人类血缘关系一样,通过这种关系,可以实现数据的容错,比如说我们子RDD数据丢失了,可以通过计算父RDD重新生成子RDD数据。

二、如何生成RDD?
RDD生成方式有2种:
1.执行tarnsform操作(变换操作)将Scala的其他集合类型转换成RDD形式
如:
parallelize(数据集,分区数)

val data = Array(1,2,3,4)
val RDD1 = sc.parallelize(data, 2)

注意:
在调用parallelize()方法时,有一个重要的参数可以指定,就是要将集合切分成多少个partition。Spark会为每一个partition运行一个task来进行处理。Spark官方的建议是,为集群中的每个CPU创建2-4个partition。Spark默认会根据集群的情况来设置partition的数量。但是也可以在调用parallelize()方法时,传入第二个参数,来设置RDD的partition数量。比如,parallelize(data, 2)

makeRDD(数据集,分区数)

val data2 = List(1,2,3,4)
val RDD2 = sc.makeRDD(data2,2) 

注意:
在调用makeRDD()方法时,可以去指定partition个数,如果未指定,则Spark默认会按照RDD的数据量大小划分分区数。

2.通过读取外部存储系统的数据集创建RDD,如HDFS,HBase,或任何与hadoop有关的数据源。
方法:textFile(“数据文件路径”,分区数)

val rdd3 =sc.textFile("J://tmp/1.txt",2)

3.通过父RDD创建子RDD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值