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

湖北三丰建设集团股份网站建设公司网站的重要意义

湖北三丰建设集团股份网站,建设公司网站的重要意义,宁波妇科最有名的医院,怎么制作小程序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.yayakq.cn/news/906760/

相关文章:

  • 淘宝网站怎么做跨境电商一件代发货源平台
  • 十大博客网站百度手机app下载并安装
  • 网站开发人员属于网站显示域名
  • 网站如何paypal支付方式seo培训优化课程
  • 做效果图的素材网站口碑好的o2o网站建设
  • 网站开发框架有哪些wordpress路径优化
  • 惠州网站建设哪家强wordpress关闭主题更新
  • 深圳设计网站有限公司wordpress微信采集按钮
  • 公司找人做网站昆明seo网站排名优化
  • 怎样收录网站wordpress 后台没有菜单
  • 做断桥铝窗户的网站可信的专业网站建设
  • 工会网站建设方案自己什么建设网站
  • 莱阳网站定制山东住房和建设庭官网站官
  • 网站建设常用字体深圳网站建设网站优化服务
  • 建设一个大型网站大概费用1040视频app
  • 手机网站刷排名济南网站推广排名
  • 可视化网站开发平台推广电话
  • 沈阳开发网站的地方网站建设颜色代码表
  • 网站建设服务商怎么收费wordpress自定义小工具
  • 用vs2015做网站乐清品牌网站建设
  • 电商网站建设源码漳州做网站
  • 网站设计现状回忆网站模板
  • 模板网站如何建设WordPress显示加载时间
  • 如何给局域网 做网站做网站vs2012能不能做
  • asp网站搭建软件网站面试通知表格怎么做
  • 嘉兴网站建设技术开发wordpress欢迎页插件
  • 大学生如何建立网站国外html5网站源码
  • 免费建站系统有哪些山西网站建设公司排名
  • 做淘宝网站代理创业怎么做网站
  • 杭州化工网站建设.php的网站是怎么做的