【大数据分析】基本RDD操作

RDD有两种操作:transformations和actions。transformations在一个RDD上进行有用的数据操作得到一个新的RDD。actions触发计算过程并且返回结果。Spark的transformation是“lazy”的,意味着它在遇到actions前不会触发真正的计算过程。

创建RDD

RDD(Resilient Distributed Dataset),即弹性分布式数据集,可以通过使用它很方便地将数据存储到磁盘和内存中,并能控制数据的分区数。
1、数据集合

val data = Array(1,2,3,4,5,6)
//3是分区数
val dataRDD = sc.parallelize(data,3)

每一个分区对应一个对应的任务Task。默认情况下集群中的每一个CPU对应运行2-4个分片。Spark会根据实际情况自行设定分片数量,但也可以自定义,如上面的3。
2、外部数据源
Spark支持文本文件、序列文件以及其他Hadoop支持的输入格式文件。

//当前目录文件
val dataRDD1 = sc.textFile("data.txt")
//HDFS文件,并指定3个分区
val dataRDD2 = sc.textFile("hdfs://<ip>:<port>/input/data.txt",3)
//本地文件
val dataRDD3= sc.textFile("/input/data.txt")
//多个文件
val dataRDD4 = sc.textFile("/input/001.txt","/input/002.txt")
//通配符
val dataRDD5 = sc.textFile("/input/*.txt")

transformations

map
map允许使用一个函数作用于rdd中所有的数据。

val rdd1 = sc.parallelize(1 to 9,3)
val rdd2 = rdd1.map(x=>x*2)
println(rdd2.map(x => x.toString).reduce((x,y) => x + "," + y))
2,4,6,8,10,12,14,16,18

filter
对RDD中的元素记性过滤

val rdd3 = rdd2.filter(x=>x>10)
println(rdd3.map(x => x.toString).reduce((x,y) => x + "," + y))
12,14,16,18

flatMap
在map功能的基础上添加了扁平化

val rdd4 = rdd3.flatMap(x=>x to 20)
println(rdd4.map(x => x.toString).reduce((x,y) => x + "," + y))

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值