Spark算子补充<一>
来源:互联网 发布:淘宝网品种销量排行榜 编辑:程序博客网 时间:2024/06/10 22:52
collectAsMap
函数原型def collectAsMap(): Map[K, V]
功能和collect函数类似。该函数用于Pair RDD,最终返回Map类型的结果,如果RDD中同一个Key中存在多个Value,那么后面的Value将会把前面的Value覆盖,最终得到的结果就是Key唯一,而且对应一个Value
keyby
函数原型def keyBy[K](f: T => K): RDD[(K, T)]
创建一个pairRDD,而key就是keyBy所指定的
repartition和coalesce
利用repartition和coalesce重分区
val data = spark.sparkContext.textFile("J:\\reference\\temp\\pom.txt") val size = data.partitions.size println(s"原分区大小:$size") //如果重分区的数目大于原来的分区数,那么必须制定shuffle参数为true,否则分区数不变 val rdd1 = data.coalesce(4, true) val size2 = rdd1.partitions.size println(s"使用coalesce新分区大小:$size2") //该函数其实就是coalesce函数第二个参数为true的实现 val rdd2 = data.repartition(5) val size3 = rdd2.partitions.size println(s"使用reparation分区大小:$size3")
randomSplit
该函数根据weights权重,将一个RDD切分成多个RDD
val rdd = spark.sparkContext.makeRDD(1 to 10, 10) //权重参数,权重越大分得数据的几率也就越大,第二个参数10是种子 val splitedRDD = rdd.randomSplit(Array(1.0, 2.0, 3.0, 4.0)) for (elem <- splitedRDD) { for (e <- elem) { print(e + " ") } println() }
glom
该函数是将RDD中每一个分区中类型为T的元素转换成Array[T],这样每一个分区就只有一个数组元素
val rdd = spark.sparkContext.makeRDD(1 to 10, 3) val size = rdd.partitions.size println(s"原rdd分区大小$size") //将原rdd的3个分区转化为一个具有三个元素的数组 val rdd2 = rdd.glom() for (elem <- rdd2) { for (e <- elem) { print(e + " ") } println() }
union
//将两个rdd合并不去重
val rdd1 = spark.sparkContext.makeRDD(1 to 2, 1) val rdd2 = spark.sparkContext.makeRDD(2 to 3, 1) for (elem <- rdd1.union(rdd2).collect()) { println(elem) }
intersection
//返回两个rdd的交集并且区中
//numPartition指定分区
//指定分区函数
val rdd1 = spark.sparkContext.makeRDD(1 to 2, 1) val rdd2 = spark.sparkContext.makeRDD(2 to 3, 1) val rdd3 = rdd1.intersection(rdd2, 2) for (elem <- rdd3.collect()) { println(elem) } println(rdd3.partitions.size)
subtract
该函数类似于intersection,但返回在RDD中出现,并且不在otherRDD中出现的元素,不去重
val rdd1 = spark.sparkContext.makeRDD(Seq(1, 2, 2, 3)) val rdd2 = spark.sparkContext.makeRDD(3 to 4) val rdd3 = rdd1.subtract(rdd2) for (elem <- rdd3.collect()) { println(elem) }
阅读全文
0 0
- Spark算子补充<一>
- Spark RDD算子—补充
- Spark算子(一)
- Spark算子讲解(一)
- Spark算子讲解(一)
- Spark 算子
- spark算子
- spark 算子
- Spark算子
- spark算子
- Spark操作算子 转换算子
- spark RDD算子(一) parallelize,makeRDD,textFile
- Spark算子及功能
- spark rdd 算子
- 图解Spark Transformation算子
- Spark算子系列文章
- Spark 算子分析
- spark算子系列文章
- redis集群搭建详细指导(图文介绍)
- 值的交换
- JS的prototype和__proto__
- Snakes and Ladders LightOJ
- Hive 1.x升级hive2.1.1全过程及与HBase的互通
- Spark算子补充<一>
- Java中的线程的状态与生命周期
- C++调用空指针对象的成员函数成功的理解
- SEO网站性能优化
- python TypeError: 'module' object is not callable
- LeetCode算法问题1 —— Add Two Numbers
- 2017.9.7 骑士 思考记录
- tomcat7.0下jndi的三种配置方式
- mongodb学习(一):centos下安装mongodb