摘要: 【注意】: 如果要使用Spark自带的Long类型的累加器,直接sc.longAccumulator()获取使用即可,底层累加器会自动注册 但是如果我们想要使用自定义累加器,必须通过SparkContext的register(累加器对象名)显示注册才能使用,否则累加器不生效 累加器对于分区,只写不读 阅读全文
posted @ 2022-08-24 20:12 jsqup 阅读(21) 评论(0) 推荐(0) 编辑
摘要: HighWordCountAccumulator.scala package accumulator import org.apache.spark.util.AccumulatorV2 import scala.collection.mutable /* 继承AccumulatorV2类, 传递两 阅读全文
posted @ 2022-08-24 20:02 jsqup 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 1.累加器 object AccCode { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[2]").setAppName("sum") val sc = new Sp 阅读全文
posted @ 2022-08-24 20:00 jsqup 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 分区器只有键值对类型的RDD才可以使用分区器去定义分区规则,非键值对类型RDD也有分区,但是数值类型的rdd是均匀分区的,不可把控的 1. HashPartitioner 定义:HashPartitioner 按照key值的hashcode的不同 分到不同分区里面 弊端:可能会造成数据倾斜问题(每一 阅读全文
posted @ 2022-08-24 18:00 jsqup 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 1. countByKey 定义:countByKey():scala.collection.Map(K,Long)按照key值计算每一个key出现的总次数 案例: val rdd:RDD[(String,Int)] = sc.makeRDD(Array(("zs",60),("zs",70),(" 阅读全文
posted @ 2022-08-24 17:45 jsqup 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 定义:combineByKey(createCombiner,mergePart,mergerbine ) combineByKey需要传递三个参数(函数) 1、createCombiner函数 将相同key值的某一个value数据进行一个函数操作,得到一个新的value数据 零值(新的value数 阅读全文
posted @ 2022-08-24 14:41 jsqup 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 1. sortByKey 定义:sortByKey([ascending], [numPartitions]) 解释:按照key值对RDD进行排序,返回一个排序完成RDD ascending: boolean(true:升序 false:降序) numPartitions: 分区个数 案例: def 阅读全文
posted @ 2022-08-24 14:09 jsqup 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 1. groupByKey 定义:groupByKey([numPartitions])、 解释:只对键值对类型RDD生效,同时返回的是一个新的RDD[(key,Iterator[Value])] 案例: def groupByKeyOper(sc: SparkContext): Unit = { 阅读全文
posted @ 2022-08-24 08:44 jsqup 阅读(21) 评论(0) 推荐(0) 编辑