这篇文章主要介绍“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算子的转换操作介绍”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。