首页/新闻资讯/正文详情

【算子2】spark(四):spark core:trans算子中key-value类型的算子使用说明

发布时间:2026/11/3 9:09:53 来源:云帆数科 栏目:资讯中心
【算子2】spark(四):spark core:trans算子中key-value类型的算子使用说明
文章目录1. Key-Value类型的算子分类2. 常用算子使用举例partitionBy通过key进行分区groupBykey通过key进行分组combineByKeyjoincogroup(otherDataset, [numTasks])1. Key-Value类型的算子分类一、输入分区与输出分区一对一mapValues(func):针对于(K,V)形式的类型只对V进行操作sortByKey([ascending],[numTasks]):按照key值进行排序二、RDD聚集reduceByKey(func):将相同key的value值进行收集,例如求出每个key的平均值combineByKey(func):对数据进行分区内和分区间的操作partitionBy(func):通过key值进行分区;分区逻辑可以是默认可以是自定类继承Partitioner三、连接join(otherDataset,[numTasks])):类似于mysql中的外键关联,关联要素key相同leftOutJoin()\rightOutJoin:cogroup(otherDataset):与join类似但不同的是没有相同的key时同样可以进行联合。2. 常用算子使用举例partitionBy通过key进行分区println(分区数arrayRDD.partitions.size)//分区逻辑可以是默认可以是自定类继承PartitionervalpartitionByRDD:RDD[(Int,String)]arrayRDD.partitionBy(newHashPartitioner(2))println(分区数partitionByRDD.partitions.size)groupBykey通过key进行分组相同的key分为一组//将数据变成Tuple2valArrayRDD:RDD[String]sc.makeRDD(Array(one,two,two,three,three,three))valmapRDD:RDD[(String,Int)]ArrayRDD.map((_,1))//groupByKeyvalgroupByKeyRDD:RDD[(String,Iterable[Int])]mapRDD.groupByKey()//map对Tuple2的CompactBuffer进行求和操作valsumRDD:RDD[(String,Int)]groupByKeyRDD.map(t(t._1,t._2.sum))sumRDD.collect().foreach(println)combineByKey对数据进行分区内和分区间的操作valcombineByKeyRDD:RDD[(String,(Int,Int))]ListRDD.combineByKey((_,1),(acc:(Int,Int),v)(acc._1v,acc._21),(acc1:(Int,Int),acc2:(Int,Int))(acc1._1acc2._1,acc1._2acc2._2))combineByKeyRDD.collect().foreach(println)//求平均valavrRDD:RDD[(String,Int)]combineByKeyRDD.map{case(x,y)(x,y._1/y._2)}avrRDD.collect().foreach(println)join在类型为(K,V)和(K,W)的RDD上调用返回一个相同key对应的所有元素对在一起的(K,(V,W))的RDD1创建第一个pairRDD scalavalrddsc.parallelize(Array((1,a),(2,b),(3,c)))2创建第二个pairRDD scalavalrdd1sc.parallelize(Array((1,4),(2,5),(3,6)))3join操作并打印结果 scalardd.join(rdd1).collect()res13:Array[(Int,(String,Int))]Array((1,(a,4)),(2,(b,5)),(3,(c,6)))cogroup(otherDataset, [numTasks])作用在类型为(K,V)和(K,W)的RDD上调用返回一个(K,(Iterable,Iterable))类型的RDD需求创建两个pairRDD并将key相同的数据聚合到一个迭代器。1创建第一个pairRDD scalavalrddsc.parallelize(Array((1,a),(6,b),(2,c),(5,d)))2创建第二个pairRDD scalavalrdd1sc.parallelize(Array((1,a),(5,b),(5,b)))3cogroup两个RDD并打印结果 scalardd.cogroup(rdd1).collect()与join类似但不同的是没有相同的key时同样可以进行联合。

相关推荐

【环境情况】linux环境检查:内存剩余、磁盘读写性能、hosts、innode数量、CPU等
【环境情况】linux环境检查:内存剩余、磁盘读写性能、hosts、innode数量、CPU等

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:09:53

【算子1】spark(三):spark core:trans算子中value类型的算子使用说明
【算子1】spark(三):spark core:trans算子中value类型的算子使用说明

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:09:53

51单片机:keil软件问题Error: failed to execute ‘C:UsersliguangyunDesktopC51BINC51.EXE‘
51单片机:keil软件问题Error: failed to execute ‘C:UsersliguangyunDesktopC51BINC51.EXE‘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:09:53

如何快速部署Mistral Medium 3.5 128B:5步完成本地vLLM服务器搭建
如何快速部署Mistral Medium 3.5 128B:5步完成本地vLLM服务器搭建

如何快速部署Mistral Medium 3.5 128B:5步完成本地vLLM服务器搭建 Mistral Medium 3.5 128B是一款具有1280亿参数的强大开源AI模型,支持256k超长上下文窗口,具备多模态输入、函数调用和推理能力。本文将通过5个简单步骤,教你如何… · 2026/11/3 9:52:57

MiniMax-Text-01:400亿级MoE模型如何突破400万token上下文?
MiniMax-Text-01:400亿级MoE模型如何突破400万token上下文?

MiniMax-Text-01:400亿级MoE模型如何突破400万token上下文? 导语:MiniMax最新发布的4560亿参数混合架构大模型MiniMax-Text-01,通过创新技术组合实现400万token超长上下文处理能力,在多项长文本任务中表现超越主流商业… · 2026/11/3 9:52:57

【58】舌象数据集(有v5/v8模型)/YOLO舌象检测
【58】舌象数据集(有v5/v8模型)/YOLO舌象检测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:52:57

【大数据框架】Calcite 基础概念:从 SQL 到执行计划的思维路径
【大数据框架】Calcite 基础概念:从 SQL 到执行计划的思维路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:51:56

Qwen3-Omni:多模态AI实时交互全攻略
Qwen3-Omni:多模态AI实时交互全攻略

Qwen3-Omni:多模态AI实时交互全攻略 导语 Qwen3-Omni-30B-A3B-Instruct正式发布,作为一款原生支持文本、图像、音视频输入并实时生成语音的多语言全模态模型,它标志着AI交互从单一模态向"感知-理解-响应"全链路智能化的跨越。 行… · 2026/11/3 9:51:56

三环境测试全覆盖:OpenRouter ai-sdk-provider Node、Edge与E2E测试体系解析
三环境测试全覆盖:OpenRouter ai-sdk-provider Node、Edge与E2E测试体系解析

【免费下载链接】ai-sdk-provider The OpenRouter provider for the Vercel AI SDK contains support for hundreds of models through the OpenRouter chat and completion APIs. 项目地址: https://gitcode.com/gh_mirrors/ai/ai-sdk-provider 点击查看 免费下载 … · 2026/11/3 9:51:56

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码