Spark countByKey算子

Spark中countByKey算子详解介绍 对于wordcount这个任务之前我们是使用 `reduceByKey` 来进行相同key的值进行聚合,获取每个key对应的值有多少,本文将介绍另外一个更为方便的算子 `countByKey` ,使用它直接就会返回每种key对应的值有多少,以map形式返回。 阅读详情

该算子先按照key分组再做count操作

注意事项:

1.数据类型是K,V的RDD才能调用该算子

2.该算子只会在Driver端启动Executor进程来执行计算

3.计算的结果以Map[K, Long]的形式保存在Driver端内存中

所以结果数据集灰常大的时候,建议使用

rdd.mapValues(_ => 1L).reduceByKey(_ + _)来代替,

返回的结果是一个[T, Long]类型的RDD

源码片段:

/**
   * Count the number of elements for each key, collecting the results to a local Map.
   *
   * @note This method should only be used if the resulting map is expected to be small, as
   * the whole thing is loaded into the driver's memory.
   * To handle very large results, consider using rdd.mapValues(_ => 1L).reduceByKey(_ + _), which
   * returns an RDD[T, Long] instead of a map.
   */
  def countByKey(): Map[K, Long] = self.withScope {
    self.mapValues(_ => 1L).reduceByKey(_ + _).collect().toMap
  }

代码实战

  val rdd2: RDD[(String, Int)] = sc.parallelize(List(
   ("zhangsan", 18),
   ("zhangsan", 19),
   ("lisi", 20),
   ("lisi", 20),
   ("wangwu", 18)
  ), 3)
  val countbykey: collection.Map[String, Long] = rdd2.countByKey()
  println("countbykey = " + countbykey)

运行结果:

countbykey = Map(zhangsan -> 2, wangwu -> 1, lisi -> 2)

 

 

AXI2APB_bridge 设计 此处研究AHB Slave到 APB master的桥接器,实现接口转化,例如下图之后是参数描述 阅读详情

相关推荐

riscv32-gcc工具链实战:从下载到编译的完整指南

本文提供了一份详尽的riscv32-gcc工具链实战指南,涵盖从官方渠道下载预编译版本、正确选择riscv32-glibc版本、配置环境变量到实战编译的全过程。通过清晰的步骤和避坑指南,帮助开发者快速搭建稳定的RISC-V交叉编译环境,并成功编译从Hello World到Linux内核的程序。

s3t4u的博客 675

Spark行动算子之countByKey

今天我们来学习一下Spark的一个行动算子countByKey。先去API中看一下: 此算子的作用是计算每一个key的元素个数,并且把结果保存到一个Map中。 实测一下: import org.apache.spark.{SparkConf, SparkContext} object testCountByKey { def main(args: Array[S...

LifeIsGood 590

感应电机无速度传感器FOC控制原理与Simulink仿真实践

无速度传感器FOC控制是电机驱动领域的重要技术,通过算法重构实现仅依赖电气参数的闭环控制。其核心原理基于电机数学模型,利用Clark/Park变换和滑模观测器估算转子位置和转速。这种技术在工业伺服系统中具有显著价值,能有效降低系统成本并提高可靠性。典型应用场景包括纺织机械、风机驱动等需要精确转速控制的设备。本文以感应电机为例,详细解析了无感FOC的Simulink实现方法,特别关注滑模观测器设计和双闭环控制策略,为工程师提供可直接复用的参数调优经验。

weixin_29189987的博客 259

RDD转换算子countByKey 和 countByValue详解

【代码】RDD转换算子countByKey 和 countByValue详解。

yqqの博客 374

Plant simulation、Flexsim、Automod、Emulate3D、VisuaComponent仿真软件对比

E3D在行业内以展示效果好,入门阶段易学易用人机界面友好,电控仿真连接方便不需要借助其他第三方软件,E3D平台开放度较高用户DIY程度强,数据分析功能针对要评定对象的KPI的可根据项目或者使用者需求进行评定。3.支持导入导出多种格式的文件,比如dwg、dxf、fbx、obj、3ds、step、stp、iges、skp、stl、wrl、 bmp 等等。3.软件自带模型组件库程序代码开放,用户可以引用、修改、拷贝,按照自己的逻辑修改模型,或者创建模型并保存到组件库与别人共享。3. 支持导出布局图片。

qq_43342303的博客 3580

从入门到精通:MediaGo跨平台部署全攻略,Docker+NAS实战案例深度拆解!

本篇将深入解析开源媒体处理工具MediaGo的运作机制,该软件具备跨平台兼容性,支持Windows、MacOS及Linux三大主流操作系统。其核心创新在于采用模块化架构设计,用户无需额外依赖任何插件即可完成快速部署。作为GitHub平台上的开源项目,该工具特别注重用户体验设计,通过Docker容器化方案可无缝接入各类网络存储设备,显著优化系统资源占用并提升数据处理效率。以飞牛云NAS系统为实施案例,本文将详细展示本地化部署全流程。

Yawesh的博客 1954

Spark RDD算子之PairRDD的Action操作 -- countByKey、collectAsMap

1、countByKey 统计 RDD 中各元素的数量 Scala版本 val conf = new SparkConf().setMaster("local[*]").setAppName("CountByKeyScala") val sc = new SparkContext(conf) val rdd = sc.parallelize(Array(("a",2),("a",3),("c",5),("c",7),("b",9))) println(rdd.countByK

绿萝蔓蔓绕枝生 256

大语言模型(LLM)在组合优化中的新突破:LLM-LNS与FunSearch性能对比

本文深入探讨了大语言模型(LLM)在组合优化中的创新应用,重点对比了LLM-LNS与FunSearch两种方法的性能差异。研究表明,LLM-LNS在物流路径规划、资源调度等场景中展现出显著优势,其双层自演化架构能有效平衡探索与利用,相比传统方法提升效率约43%。文章还提供了实践选择指南,帮助开发者根据具体需求选用合适的技术方案。

weixin_42526415的博客 406

reduceByKey groupByKey countByKey使用及区别总结

三者都是对(k,v)类型的RDD进行聚合操作,但是具体的聚合方式和使用场景不同 1.reduceByKey 在一个(K,V)的RDD上调用,返回一个(K,V)的RDD,使用指定的reduce函数,将相同key的值聚合到一起,reduce任务的个数可以通过第二个可选的参数来设置。在shuffle之前,会在分区内部进行预聚合操作,降低开销。 需求:创建一个pairRDD,计算相同key对应值的相加结果 (1)创建一个pairRDD scala> val rdd = sc.parallelize(Lis

kk阿彬 1581

Vue中实现word文档渲染、在线编辑、保存

Vue3对word文档进行渲染、编辑、保存。word转成html,html转成word

h18749849699的博客 1328

配电网可靠性评估(一)—最小路法和非序贯蒙特卡洛模拟法的matlab实现

电力系统的可靠性研究是相关领域的热点问题。根据研究对象的不同,又可分为发电系统的可靠性,输电系统的可靠性和配电系统的可靠性。配电网在电力系统中处于最末端的位置,直接和用户相连,一旦出现故障情况,就会在用户侧表现为停电事故。因此对配电网的可靠性评估有着重大意义。......

配电网和matlab的博客 1万+

Java Spark算子:count 与 countByKey

import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaSparkContext; import scala.Tuple2; import java.util.Arrays; import java.util.List...

weixin_44576373的博客 411

软件设计师考试下午题代码部分详解:23种设计模式全面解析

软件设计师考试的下午题通常会考察设计模式的应用,这部分内容既是重点也是难点。本文将系统地介绍考试中常见的23种设计模式,通过详细代码示例和通俗易懂的讲解,帮助考生掌握这些核心知识点,提高应试能力。概念:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。适用场景:系统要独立于产品的创建、组合和表示时;系统要由多个产品系列中的一个来配置时。@Override@Override@Override@Override// 产品族A@Override。

4万+

Spark算子[07]:reduce,reduceByKey,count,countByKey

算子 reduce,reduceByKey,count,countByKey,aggregateByKey 可分为两类:action操作:reduce,count,countByKey transformation操作:reduceByKey,aggregateByKey1、reducereduce(func) 是对JavaRDD的操作 使用函数func聚合rdd的元素(它需要两个参数并返回一

行走的树 2993

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Spark算子 reduceByKey与countByKey区别及用法

reduceByKey与countByKey区别

ouzhong11的博客 928

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

大数据——Spark RDD算子(十)PairRDD的Action(动作)算子countByKey、collectAsMap

Spark RDD算子(十)PairRDD的Action(动作)算子countByKey、collectAsMapcountBykeyScala版本Java版本colleactAsMapScala版本Java版本 countBykey def countByKey(): Map[K, Long] 统计出现相同key的次数 Scala版本 package nj.zb.sparkstu import org.apache.spark.rdd.RDD import org.apache.spark.{Sp

蜂蜜柚子加苦茶 293

Spark算子:RDD行动Action操作(4)–countByKey、foreach、foreachPartition、sortBy

Spark算子:RDD行动Action操作(4)–countByKey、foreach、foreachPartition、sortBy   关键字:Spark算子、Spark函数、Spark RDD行动Action、countByKey、foreach、foreachPartition、sortBy countByKey def countByKey(): Map[K, Long] cou...

羽翼天宇 505

spark算子:reduce、countByKey、top

reduce(化简) def reduce(f: (T, T) ⇒ T): T 根据映射函数f,对RDD中的元素进行二元计算,返回计算结果。 scala> var rdd1 = sc.makeRDD(1 to 10,2) rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[36] at makeRDD at...

xuehuagongzi000的博客 519

大数据Spark(七十九):Action行动算子countByKey和countByValue使用案例

摘要:本文介绍了Spark中的两个行动算子countByKey和countByValue的使用方法。countByKey用于统计键值对RDD中每个Key出现的次数,返回结果到Driver端,适用于K-V格式数据。countByValue则统计RDD中每个元素出现的次数,适用于任意格式RDD。文章分别提供了Java和Scala的代码示例,演示了如何创建RDD并调用这两个算子进行计数统计,最后输出统计结果。两个算子都是常用的数据统计工具,能够帮助开发者快速获取数据集中的元素分布情况。

Lansonli(蓝深李)的博客 903

Spark中MapValues算子(可以将value的值加起来,相当于reducebykey;也可以将value的个数加起来,相当于countbykey)

package com.bjsxt; import java.util.Arrays; import java.util.List; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaSparkContext;...

wyqwilliam的博客 3561

Spark行动算子(Action)--countByKey算子

语法 Rdd. countByKey 源码 def countByKey() : scala.collection.Map[K, scala.Long] = { /* compiled code */ } 作用 针对(K,V)类型的RDD,返回一个(K,Int)的map,表示每一个key对应的元素个数。 例子 package com.day1 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext}

寒暄的博客 382

Spark行为算子中的aggregate()|fold()|countByKey()统计每种key的个数|save相关算子

aggregate() 代码实现 fold() 代码实现 countByKey()统计每种key的个数 1)函数签名:def countByKey(): Map[K, Long] 2)功能说明:统计每种key的个数 代码实现 save相关算子 1)saveAsTextFile(path)保存成Text文件 (1)函数签名 (2)功能说明:将数据集的元素以textfile的形式保存...

SmallScorpion 541

spark RDD算子(十)之PairRDD的Action操作countByKey, collectAsMap

countByKey def countByKey(): Map[K, Long] scala例子 val conf = new SparkConf().setMaster("local[*]").setAppName("CountByKey_CollectAsMap_Scala") val sc = new SparkContext(conf) //scala公共代码 val rdd = sc.parallelize(List((1,2),(2,4),(2,5),(3,1),(3,9),(3,6)))

Joie_TJ的博客 290

spark常用RDD算子 - PairRDD的Action操作countByKey, collectAsMap

countByKey 返回每个key的个数 def countByKey(): Map[K, Long] 以RDD{(1, 2),(2,4),(2,5), (3, 4),(3,5), (3, 6)}为例 rdd.countByKey会返回{(1,1),(2,2),(3,3)} JavaPairRDD<Integer, Integer> rdd = javaSparkContext.parallelizePairs(Arrays.asList(new Tuple2<>(1, ..

小哇 475

Spark 算子 countByKey()与reduceByKey()

1.transformation & action transformation :是得到一个新的RDD,方式很多,比如从数据源生成一个新的RDD或者从RDD生成一个新的RDD action : 是得到一个值,或者一个结果(直接将RDDcache到内存中) 所有的transformation都是采用的懒策略,就是如果只是将transformation提交是不会...

SuperProgram00的博客 490
上一篇: Spark IDEA本地提交到集群运行job
下一篇: Producer常用参数整理
江湖峰哥
博客等级 码龄11年 5粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值