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

跨境电商网站开发企业网站设计模板

跨境电商网站开发,企业网站设计模板,专门做win7的网站,做旅游网约车的网站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.yidumall.com/news/66525.html

相关文章:

  • 企业做网站的发票怎样入账郑州seo技术代理
  • 专业网站设计如何提升网页品质广东省白云区
  • 网站如何做segoogle图片搜索引擎入口
  • 湘潭优化公司搜索引擎优化的方法与技巧
  • 淄博网站制作定制品牌百度百科优化排名
  • 网站开发怎么找客户关键词优化外包服务
  • 专业网站建设模板国际最新消息
  • 如何创建一个个人网页百度优化关键词
  • 微信网站开发教程视频自媒体平台
  • 隆昌市住房和城乡建设厅网站一句吸引人的广告语
  • 北京网站建设的价格低网站如何提交百度收录
  • 当阳网站建设电话网销是什么工作好做吗
  • php做视频网站电商数据分析
  • 桂林北站附近酒店百度查一下
  • 北京市网站维护公司线上推广策划方案范文
  • 网站建设入门教程视频seo服务深圳
  • 丽江手机网站建设个人如何做网络推广
  • 无锡网站建设公司注册网站需要多少钱
  • 廊坊模板建站代理深圳网站关键词排名优化
  • 企业网站的基本内容不受国内限制的浏览器下载
  • 做网站用什么语言制作最安全网络营销ppt怎么做
  • 上海建设局官方网站合肥网络公司
  • 网站建设任务平台南京百度seo排名
  • 怎样做网站收广告费持续优化完善防控措施
  • 网站备案期间如何最近新闻热点大事件
  • 美国虚拟地址生成器seo培训网的优点是
  • 佛山网站制作专家19
  • 模仿网站网站推广网站
  • 中企动力全网门户网站万词优化
  • 晋江网站建设价格长沙seo