IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Spark计算框架(Pair RDD行动和变换) -> 正文阅读

[大数据]Spark计算框架(Pair RDD行动和变换)

一、概念

  • Pair RDD: 键值对形式的弹性分布式数据集,这是Spark中一种常见的数据类型,常用于聚合操作,也经常会将一些初始的ETL保存为键值对的格式。键值对RDD拥有不同于普通RDD的新操作,比如分组。

二、变换算子

  • 对单个pair RDD 的变换(例子:{(1,2), (3, 4), (3, 6)})

首先初始化该RDD:

val rdd = sc.parallelize(Array((1, 2), (3, 4), (3, 6)))
函数名目的示例结果
reduceByKey(func)按照相同的键合并rdd.reduceByKey((x, y) => x + y){(1, 2), (3, 10)}
groupByKey()按相同的键分组rdd.groupByKey(){(1, [2]), (3, [4, 6])}
conbineByKey(createCombiner, mergeValue, mergeCombiners, partitioner)按相同的键合并,返回不同的结果类型返回每个键所有的值的总和和总数的元组:rdd.combineByKey(x=>(x, 1), (x:(Int, Int), y) => (x._1 + y, x._2 + 1), (x:(Int, Int), y: (Int, Int)) => (x._1 + y._1, x._2 + y._2)){(1,(2,1)), (3,(10,2))}
mapValues(func)应用函数到pair RDD 的每个值,但是不会改变键rdd.mapValues(x=>x+1){(1, 3), (3, 5), (3, 7)}
flatMapValues(func)应用一个返回pair RDD 中每个值的迭代器的函数,并对每个返回的元素以原来的键生成键值对,通常用于分词rdd.flatMapValues(x=>x.to(5)){(1,2), (1,3), (1,4), (1,5), (3,4), (3,5)}
keys()只返回RDD中所有键rdd.keys(){1, 3, 3}
values()只返回RDD中的所有值rdd.values(){2, 4, 6}
sortByKey()返回按键排序的RDDrdd.sortByKey(){(1,2), (3,4), (3,6)}
  • 对两个pair RDD的变换(rdd={(1,2), (3,4), (3,6)}, other={(3,9)})

首先初始化RDD:

val rdd = sc.parallelize(Array((1, 2), (3, 4), (3, 6)))
val other = sc.parallelize(Array((3,9)))
函数名目的示例结果
subtractByKey去除另一个RDD中存在键的元素rdd.subtractByKey(other){(1, 2)}
join两个RDD执行内连接rdd.join(other){(3,(4, 9)), (3, (6, 9))}
rightOuterJoin两个RDD执行连接操作,但是other RDD中的key必须存在rdd.rightOuterJoin(other){(3, (Some(4), 9)),(3, (Some(6), 9))}
leftOuterJoin两个RDD执行连接操作,但是第一个RDD中的key必须存在rdd.leftOuterJoin(other){(1,(2, None)), (3, (4, Some(9))), (3, (6, Some(9)))}
cogroup对两个RDD的数据共享相同的键分组rdd.cogroup(other){(1, ([2], [])), (3, ([4, 6], [9]))}

三、行动算子

  • 对Pair RDD的动作(例子:{(1, 2), (3, 4), (3, 6)})

和变换算子一样,所有的基本RDD的所有传统动作都适用于pair RDD。而pair RDD有些额外的动作,用到了数据的键值对的特性。

函数名目的示例结果
countByKey()计算每个主键的元素个数rdd.countByKey()Map(1 -> 1, 3 -> 2)
collectAsMap()收集数据为map结构方便查找rdd.collectAsMap()Map(1 -> 2, 3 -> 6)
lookup(key)返回关联key的所有值rdd.lookup(3)[4, 6]
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:36:32  更:2022-02-28 15:40:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:23:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码