十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要介绍“Spark算子的转换操作介绍”,在日常操作中,相信很多人在Spark算子的转换操作介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spark算子的转换操作介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
10年积累的成都网站设计、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有银川免费网站建设让你可以放心的选择与我们合作。
##概述
每一次转换操作都会产生不同的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算子的转换操作介绍”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!