Spark学习1: 基础函数功能解读

本文介绍了Apache Spark中RDD的基本操作,包括transformation和action。通过具体实例展示了如何使用map、filter、flatMap等方法处理数据,并解释了这些操作在何时执行及如何执行。此外还涉及了union、join等复合操作及count、reduce等聚合方法。
摘要由CSDN通过智能技术生成

Spark已经定义好了一些基本的transformation 和 action的操作,下面我们一探究竟。





实例开发:


val rdd = sc.parallelize(List(1,2,3,4,5,6))  

val mapRdd = rdd.map(_*2)  //这是典型的函数式编程

mapRdd.collect()  //上面的map是transformation,到了这里的collect才开始执行,是action,返回一个Array    Array(2,4,6,8,10,12)


val filterRdd = mapRdd.filter(_ > 5)

filterRdd.collect() //返回所有大于5的数据的一个Array, Array(6,8,10,12)


val rdd = sc.textFile("/xxx/sss/ee")

rdd.count //计算行数

rdd.cache   //可以把rdd保留在内存里面

rdd.count //计算行数,但是因为上面进行了cache,这里速度会很快


val wordcount = rdd.flatMap(_.split(' ')).map((_, 1)).reduceByKey(_+_)  //把每一行进行根据空格分割,然后flatMap会把多个list合并成一个list,最后把每个元素变成一个元组

//然后把具有相同key的元素的value进行相加操作,参考上面图片中的函数定义,针对reduceByKey,传入的函数是对value进行操作的。

wordcount.saveAsTextFile("/xxx/ss/aa")   //把结果存入文件系统

wordcount.collect //可以得到一个数组


val rdd1 = sc.parallelize(List(('a',1),(‘a’, 2)))

val rdd2 = sc.parallelize(List(('b',1),(‘b’, 2)))

val result_union = rdd1 union rdd2 //结果是把两个list合并成一个,List(('a',1),(‘a’, 2),('b',1),(‘b’, 2))


val rdd1 = sc.parallelize(List(('a',1),(‘a’, 2), ('b', 3)))

val rdd2 = sc.parallelize(List(('a',4),(‘b’, 5)))

val result_union = rdd1 join rdd2 //结果是把两个list做笛卡尔积,Array(('a', (1,4), ('a', (2,4), ('b', (3, 5)))


val rdd = sc.parallelize(List(1,2,3,4))

rdd.reduce(_+_) //reduce是一个action,这里的结果是10


val rdd = sc.parallelize(List(('a',1),(‘a’, 2),('b',1),(‘b’, 2))

rdd.lookup("a") //返回一个seq, (1, 2) 是把a对应的所有元素的value提出来组成一个seq


val wordcount = rdd.flatMap(_split(' ')).map(_,1).reduceByKey(_+_).map(x => (x._2, x._1)).sortByKey(false).map(x => (x._2, x._1))

//其实完成了一个sort by value的过程, sortByKey(false),表示倒序排列




评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值