温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Spark算子的转换操作介绍

发布时间:2021-09-16 17:23:36 来源:亿速云 阅读:209 作者:chen 栏目:大数据

这篇文章主要介绍“Spark算子的转换操作介绍”,在日常操作中,相信很多人在Spark算子的转换操作介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spark算子的转换操作介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

##概述
每一次转换操作都会产生不同的RDD,供给下一个操作使用。
####算子
解决问题其实是将问题的初始化状态,通过一系列的操作Operate对问题的状态进行转换,然后达到完成解决的状态
####惰性机制
RDD的转换过程是惰性求值的,也就是,整个转换过程只记录轨迹,并不会发生真正的计算,只有遇到了行动操作时,才会触发真正的计算。
##filter(func)
过滤出满足函数func的元素,并返回存入一个新的数据集

val conf = new SparkConf().setAppName("spark").setMaster("local")    val sc = new SparkContext(conf)    val rdd = sc.parallelize(List(1,2,3,4,5,6))    val result = rdd.filter(_%2==0)    println(result.collect().mkString(","))

##map(func)
将每个元素传递到函数func中进行操作,并将结果返回为一个新的数据集。
collect()以数组的形式返回rdd的结果,但列表中每个数乘以2

val conf = new SparkConf().setAppName("spark").setMaster("local")    val sc = new SparkContext(conf)    val rdd = sc.parallelize(List(1,2,3,4,5,6))    val mapResult = rdd.map(_*2)    println(mapResult.collect().toBuffer)

##flatMap(func)
与map相似,但是每个输入元素都可以映射到0或多个输出结果,所以func应该返回一个序列,而不是单一元素

val conf = new SparkConf().setAppName("RDD").setMaster("local[*]")    val sc = new SparkContext(conf)    val arrayRDD: RDD[List[Int]] = sc.makeRDD(Array(List(1,2),List(3,4)))    val listRDD: RDD[Int] = arrayRDD.flatMap(data=>data)    listRDD.collect().foreach(println)
val conf = new SparkConf().setAppName("spark").setMaster("local")    val sc = new SparkContext(conf)    val rdd = sc.parallelize(Array("a b c","b c d"))    val result = rdd.flatMap(_.split(" "))    println(result.collect().mkString(","))

##sample
参数1 是否抽出的数据放回
参数2 抽样比例 浮点型
参数3 种子,默认值

val conf = new SparkConf().setAppName("spark").setMaster("local")    val sc = new SparkContext(conf)    val rdd = sc.parallelize(1 to 10)    val result = rdd.sample(false,0.5)    println(result.collect().mkString(","))

##union
求并集

##intersection
求交集

##distinct
去除重复元素

到此,关于“Spark算子的转换操作介绍”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI