Spark之RDD编程常用算子代码例子

阅读目录RDD一、创建RDD1、从对象集合创建RDD2、从外部存储创建RDD(1)从HDFS文件创建RDD(2)从Linux本地文件创建RDD二、转换算子1、map()算子2、filter()算子3、flatMap()算子4、distinct()算子5、groupByKey()算子6、reduceByKey()算子7、sortBy()算子8、union()算子三、行动算子1、reduce()算子2...
摘要由CSDN通过智能技术生成

RDD

1、RDD(Resilient Distributed Datasets)弹性的分布式数据集,又称Spark core,它代表一个只读的、不可变、可分区,里面的元素可分布式并行计算的数据集。

2、RDD主要有两大类操作,分别为转换(Transformations)和行动(Actions),转换操作通过某种函数将一个RDD转换为一个新的RDD,但是转换操作是懒操作,不会立即执行计算。而行动操作是用于触发转换操作的操作,这个时候才会真正开始计算。

3、常用的Transformations函数

函数 描述
map(func) 对RDD数据集中的每个元素都使用func,返回一个新的RDD
filter(func) 对RDD数据集中的每个元素都使用func,返回使func为true的元素构成的RDD
flatMap(func) 和map类似,但是flatMap生成的是多个结果
union(otherDataset) 返回一个新的dataset,包含源dataset和给定dataset的元素的集合
grouplyKey(num Tasks) 返回( K,Seq[V] ),根据相同的键分组
reducclykey(func [numTasks]) 用一个给定的func作用在grouplyKey 而产生的(K,Seq[V),比如求和

4、常用的Actions函数

函数 描述
reduce( func) 通过函数func聚集数据集中的所有元素。func函数接收两个参数,返回一个值
collect() 返回数据集中所有的元素
count() 返回数据集中所有元素的个数
first0) 返回数据集中的第一个元素
take(n) 返回前n个元素
saveAsTextFile(path) 将数据集的元素以textfile的形式保存到本地文件系统、hdfs或者任何其他Hadoop支持的文件系统。Spark将会调用每个元素的toString方法,并将它转换为文件中的一行文本
foreach(func) 对数据集中的每个元素都执行函数func

一、创建RDD

1、从对象集合创建RDD

spark可以通过parallelize()或makeRDD()方法将一个对象集合转化为RDD

scala> val rdd=sc.parallelize(List(1,2,3,4,5,6))
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:24

scala> val rdd=sc.makeRDD(List(1,2,3,4,5,6))
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[1] at makeRDD at <console>:24

从返回信息可以看出,上述创建的RDD中存储的是Int类型数据,实际上,RDD也是一个集合,与常用的List集合不同的是,RDD集合的数据分布在多台计算机上。

2、从外部存储创建RDD
(1)从HDFS文件创建RDD

直接通过textFile命令读取HDFS文件的位置即可。

scala> val rdd=sc.textFile("/WordCount/words.txt")
rdd: org.apache.spark.rdd.RDD[String] = /WordCount/words.txt MapPartitionsRDD[3] at textFile at <console>:24

scala> rdd.collect
res0: Array[String] = Array(hello hadoop, hello spark, hello scala)
(2)从Linux本地文件创建RDD

本地文件读取也是通过sc.textFile(“路径”)的方法,在路径前面加上“file://”表示从本地Linux文件系统读取。

scala> val rdd=sc.textFile("file:///usr/local/spark/words.txt")
rdd: org.apache.spark.rdd.RDD[String] = file:///usr/local/spark/words.txt MapPartitionsRDD[7] at textFile at <console>:24

scala> rdd.collect
res2: Array[String] = Array(hello hadoop, hello spark, hello scala)

从上述rdd.collect的输出内容可以看到,textFile()方法将源文件中的内容按行拆分成了RDD集合中的多个元素。

二、转换算子

1、map()算子

map()是一种基础的RDD转换操作,它接收一个函数作为参数,并把这个函数应用于RDD的每个元素,最后将函数的返回结果作为结果RDD中对应元素的值。
例如,将rdd1中的每个元素加1(_+1等同于x=>x+1)并返回一个名为rdd2的新RDD:

scala> val rdd1
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值