当前位置: 首页 > news >正文

跨境电商网站开发长沙seo关键词排名

跨境电商网站开发,长沙seo关键词排名,wordpress会员插件,电商平台收费标准Spark累加器 累加器用来把Executor端变量信息聚合到Driver端,在driver程序中定义的变量,在Executor端的每个task都会得到这个变量的一份新的副本,每个task更新这些副本的值后,传回driver端进行merge。 累加器一般是放在行动算子…

Spark累加器

累加器用来把Executor端变量信息聚合到Driver端,在driver程序中定义的变量,在Executor端的每个task都会得到这个变量的一份新的副本,每个task更新这些副本的值后,传回driver端进行merge。

累加器一般是放在行动算子中进行操作的。

Spark累加器有哪些特点?

1)累加器在全局唯一的,只增不减,记录全局集群的唯一状态

2)在Executor中修改它,在Driver读取

3)executor级别共享的,广播变量是task级别的共享两个application不可以共享累加器,但是同一个app不同的job可以共享

应用举例

不经过Shuffle实现词频统计

object Spark06_Accumulator {def main(args: Array[String]): Unit = {val conf: SparkConf = new SparkConf().setAppName(this.getClass.getName).setMaster("local[*]")val sc = new SparkContext(conf)val rdd: RDD[(String, Int)] = sc.makeRDD(List(("a", 1), ("b", 2), ("a", 3), ("b", 4)))// 声明累加器val sumAcc: LongAccumulator = sc.longAccumulator("sumAcc")rdd.foreach {case (word, count) => {// 使用累加器sumAcc.add(count)}}// 累加器的toString方法//println(sumAcc)//取出累加器中的值println(sumAcc.value)sc.stop()}
}

不经过shuffle,计算以H开头的单词出现的次数。

object Spark07_MyAccumulator {def main(args: Array[String]): Unit = {val conf: SparkConf = new SparkConf().setAppName(this.getClass.getName).setMaster("local[*]")val sc = new SparkContext(conf)val rdd: RDD[String] = sc.makeRDD(List("Hello", "HaHa", "spark", "scala", "Hi", "Hello", "Hi"))// 创建累加器val myAcc = new MyAccumulator//注册累加器sc.register(myAcc, "MyAcc")rdd.foreach{datas => {// 使用累加器myAcc.add(datas)}}// 获取累加器的结果println(myAcc.value)sc.stop()}
}// 自定义累加器
// 泛型分别为输入类型和输出类型
class MyAccumulator extends AccumulatorV2[String, mutable.Map[String, Int]] {// 定义输出数据变量var map: mutable.Map[String, Int] = mutable.Map[String, Int]()// 累加器是否为初始状态override def isZero: Boolean = map.isEmpty// 复制累加器override def copy(): AccumulatorV2[String, mutable.Map[String, Int]] = {val MyAcc = new MyAccumulator// 将此累加器中的数据赋值给新创建的累加器MyAcc.map = this.mapMyAcc}// 重置累加器override def reset(): Unit = {map.clear()}// 累加器添加元素override def add(v: String): Unit = {if (v.startsWith("H")) {// 判断map集合中是否已经存在此元素map(v) = map.getOrElse(v, 0) + 1}}// 合并累加器中的元素override def merge(other: AccumulatorV2[String, mutable.Map[String, Int]]): Unit = {val map1: mutable.Map[String, Int] = this.mapval map2: mutable.Map[String, Int] = other.value// 合并两个mapmap = map1.foldLeft(map2) {(m, kv) => {m(kv._1) = m.getOrElse(kv._1, 0) + kv._2m}}}// 获取累加器中的值override def value: mutable.Map[String, Int] = {map}
}

参考:Spark累加器的作用和使用-CSDN博客

http://www.15wanjia.com/news/19645.html

相关文章:

  • 沈阳网站建设服务平台搜索引擎网络推广方法
  • 做网站开发的商标注册建站网站
  • 网站搜索引擎拓客百度seo优化按年收费
  • 山东做网站的公司网络营销专业技能
  • 郴州市北湖区seo排名优化软件有用吗
  • 最好科技广州网站建设品牌营销方案
  • 公司怎么制作网站关键词首页排名优化价格
  • 网站备案需要年检吗全网搜索
  • php旅游网站开发背景网络营销专业的就业方向
  • 做网站域名解析华夏思源培训机构官网
  • 网站备案更换市场营销方案
  • 馆陶网站建设公司北京网
  • 进行企业网站建设规划站外推广
  • 模板自助建站网站制作百度广告多少钱
  • 团购网站设计竞价推广哪里开户
  • 用帝国做的网站只收录首页竞价运营是做什么的
  • 网站开发平台软件百度推广如何代理加盟
  • 怎样查网站备案网络营销师
  • 免费做网站排名网络营销品牌推广
  • 襄阳网站建设多少钱开发软件app需要多少钱
  • 网络营销的特点主要有哪些seo咨询河北
  • 怀柔石家庄网站建设抖音推广渠道有哪些
  • 建立制度优化方案模板
  • 网站开发流程三部分开鲁网站seo站长工具
  • 庆阳市人大常委会网站建设如何规划企业网络推广方案
  • 做网站创业流程图在线磁力搜索神器
  • 北京政府网站开发友情链接网站
  • 网站文字设计百度指数网址是多少
  • 汕头网站设计制作公司怎么创建网页链接
  • 网站开发 协作平台论坛推广方案