action

本文介绍了Apache Spark中RDD的基本操作,包括collect、reduce、count等行动操作及take、first等限制操作,并展示了如何使用这些操作来处理和分析数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// collect,将数据以数组形式收集回 Driver 端,数据按照分区编号有序返回
val rdd1 = sc.parallelize( List (1,2,3,4,5), 2)
rdd1.collect
res1: Array[Int] = Array(1, 2, 3, 4, 5)


// reduce,将数据以输入的函数进行聚合返回一个值
val rdd1 = sc.parallelize( List (1,2,3,4,5), 2)
rdd1.reduce(_+_)
res2: Int = 15

// count,返回 rdd 元素的数量
val rdd1 = sc.parallelize( List (1,2,3,4,5), 2)
rdd1.count
res3: Long = 5

// top(*), 取最大的*个元素
val rdd1 = sc.parallelize( List (1,2,3,4,5), 2)
scala> rdd1.top(2)
res5: Array[Int] = Array(5,4)

// take(*),取前*个元素,不排序 
val rdd1 = sc.parallelize( List (3,2,4,1,5), 2)
rdd1.take(2)
res10: Array[Int] = Array(3, 2)

// first == take(1),但是返回是 int,take是list
val rdd1 = sc.parallelize( List (1,2,3,4,5), 2)
rdd1.first
res11: Int = 1

// takeOrder take的升级版,升序排序后取出
val rdd1 = sc.parallelize( List (3,2,4,1,5), 2)
rdd1.takeOrdered(3)
res10: Array[Int] = Array(1, 2, 3)

// saveAsTextFile 以文本的形式保存到文件系统中
val rdd1 = sc.parallelize( List (1,2,3,4,5), 2)
rdd1.saveAsTextFile("hdfs://dream1:9000/out2")

// aggregate, 传入两个函数,第一个函数在分区内聚合,第二个全局聚合,初始值局部聚合和总聚合都会用,结果是 ==abc=def 或者是==def=abc,两个并行的局部聚合看谁先返回

val func2 = (index: Int, iter: Iterator[String]) => {
iter.map(x => "[partID:" + index + ", value : " + x + "]")
}
val rdd2 = sc.parallelize( List ("a","b","c","d","e","f"),2)
rdd2.mapPartitionsWithIndex(func2).collect
rdd2.aggregate("=")(_ + _, _ + _)
res16: String = ==def=abc

// foreach, 将数据一条一条的取出来进行处理,函数没有返回
val rdd1 = sc.parallelize( List (1,2,3,4,5,6,7,8,9), 2)
rdd1.foreach(x => println (x))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值