搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家小花儿
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Nginx(engine x)简介(作为Web服务器、正向代理、反向代理、负载均衡、动静分离)
2
Spark大型项目实战:电商用户行为分析大数据平台
3
容器网络之Kubernetes CNI_nothing provides kubernetes-cni
4
Segment Anything Model (SAM)——分割一切,具有预测提示输入的图像分割实践
5
基于注意力机制GRU网络的机器翻译_gru神经网络内部注意力机制
6
简洁高效的 NLP 入门指南: 200 行实现 Bert 文本分类 (Pytorch 代码纯享版)_deberta 文本分类
7
Paper reading: Joint Representation Learning for Text and 3D Point Cloud_jointgt: graph-text joint representation learning
8
2024年Java最新2024最新微信小程序商城搭建教程(附源码),刷java面试题网站_微信商城小程序java
9
前端框架——React 学习总结,这篇7000字全解决
10
frp内网穿透远程访问、运维技术_frp p2p
当前位置:
article
> 正文
Spark学习笔记-键值对操作_spark为包含键值对(key-value)类型的rdd提供了一些专有的操作,这些rdd被称为pai
作者:我家小花儿 | 2024-07-13 13:46:33
赞
踩
spark为包含键值对(key-value)类型的rdd提供了一些专有的操作,这些rdd被称为pairr
1、键值对RDD通常用来进行聚合操作。
Spark为包含键值对类型的RDD提供了一些专有的操作。这些RDD被称为pairRDD。pairRDD 提供了并行操作各个键或跨节点重新进行数据分组的操作接口。
例如: reduceByKey()方法,可以分别规约每个键对应的数据;join()方法,可以把两个RDD中键相同的元素组合到一起,合并为一个RDD。
2、在python中,为了让提取键之后的数据能够在函数中使用,需要返回一个由二元组组成的RDD。
Pair RDD 可以使用所有标准RDD上的可用的转化操作。由于Pair RDD 中包含二元组,所以需要传递的函数应当操作二元组而不是独立的元素。
有时,只想访问pair RDD 的值部分,可用mapValues(func) 功能;类似于 map{ case (x,y): (x,func(y)) }
3、聚合操作
3.1 reduceByKey() : 同reduce()类似,都接收一个函数,并使用该函数对值进行合并。reduceByKey 会为数据集中的每个键进行并行的归约操作,每个归约操作会将键相同的值合并起来。
3.2 foldByKey() :
3.3 combineByKey () : combineByKey 会遍历分区中的所有元素,一次每个元素的键要么还没有遇到,要么就和之前的某个元素的键相同。如
果是一个新的元素,combineByKey()会使用一个叫做createCombiner()的函数来创建那个键对应的累加器的初始值。
需要注意的是: 这一过程会在每个分区中第一次出现各个键时发生,而不是在整个RDD 中第一次出现一个键是发生。
如果这是一个在处理当前分区之前已经遇到的键,它会使用mergeValue() 方式将该键的累加器对应的当前值与这个新值进行合并。
由于每个分区都是单独处理的,因此对于同一个键可以有多个累加器。如果有两个或者更多的分区都有对应同一个键的累加器,就需要使用用户提供的mergeCombiners()方法将各个分区的结果进行合并。
3.4 并行度调优
每个RDD都有固定数目的分区,分区决定了在RDD上执行操作时的并行度。在执行聚合或分组操作时,可以要求Spark使用给定的分区数,Spark始终尝试根据集群的大小推断出一个有意义的默认值,但是有时候你可能要对并行度进行
调优来获取更好的性能表现。 在Python中,可以使用rdd.geyNumPartitions 查看RDD的分区数。
4、数据分组
4.1 groupByKey : 使用RDD中的键来对数据进行分组,对于一个类型k的键和类型v的值组成的RDD,所得到的结果RDD类型会师【k,iterrable【v】】 (eg; 查看一个顾客的所有订单)
4.2 cogroup() : 对多个共享同一个键的RDD进行分组。对两个键的类型均为K得值类型分别为v和w的RDD 进行cogroup()时,得到的结果RDD类型是【(k, ( iterable [v], iterable[ w] ))】。如果其中一个RDD对于另一个RDD中存在的键没有对应的记录,那么对应的迭代器则为空。
5、连接
连接的方式:右外连接,左外连接,交叉连接,内连接。 普通的join操作符表示内连接。
leftOuterJoin 、 rightOuterJoin
6、数据排序
如果键有已定义的顺序,就可以对这种键值对RDD 进行排序。当数据排好序后,后续对数据进行collect()或save() 等操作就会得到有序的数据。
sortByKey()函数接收一个叫做ascending的参数,表示是否想要对结果按升序进行排序(默认为true)。 可以使用自定义的比较函数。
eg :python中使用自定义函数
rdd.sortByKey(ascending = True, numPartitions =None,keyFunc = lambda x :str(x) )
7、Pair RDD 的action 操作
和转换操作一样,所有基础RDD支持的传统操作也都在pair RDD上可用。
countByKey () : 对每个键对应的元素分别计数
collectAsMap () : 将结果以映射表的形式返回,以便查询。
lookup(key): 返回给定键对应的所有值。
8、数据分区
Spark程序可以通过控制RDD分区的方式来减少通信开销。
尽管Spark没有给出显示控制每个键具体落在那个工作节点上的方法(部分原因是Spark即使在某些节点失败时依然可以工作),但Spark可以确保同一组的键出现在同一个节点上。
partitionBy() : 转换操作,产生新的RDD
如果没有将partitionBy()转化操作的结果持久化,那么后边每次用到这个RDD时都会重复的对数据进行分区。不进行持久化会导致整个RDD谱系图重新求值。那样的话,partitionBy()带来的好处就会抵消,导致重复对数据进行分区以及跨节点的混洗。
注意: 在python中,不能将hashPartitioner对象传给partitionBy,而只需要把需要的分区数传递过去(eg : rdd.partitionBy(100) )。
9、自定义分区方式
在Python中,不需要扩展partitioner类,而是把一个特定的哈希函数作为一个额外的参数传给RDD.partitionBy() 函数。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家小花儿/article/detail/819809
推荐阅读
article
大学生
Spark
速成:
期末
不挂的秘籍_用
spark
和
scala
做
期末
项目...
通过本文的
Spark
速成策略,
大学生
可以在短时间内掌握
Spark
的关键技能,并在
期末
考试中取得优异成绩。记住,实践是学习...
赞
踩
article
spark
期末
复习_
spark
期末
复习...
Scalaobject HelloWorld {def main(args: Array[String]): Unit ...
赞
踩
article
Spark
--
Spark
编程
基础
和
编程
进阶知识总结(第三章
和
第四章)_
spark
基础
实验
和
编程
基础
总...
在RDD的执行过程中,真正的计算发生在行动操作中,在前面的所有转换,
spark
只是记录下转换操作应用的一些
基础
数据集
和
R...
赞
踩
article
Spark
性能
优化之-
资源
调优
_
本地
spark
读写
性能
如何...
文章目录概述
Spark
作业基本运行原理
资源
参数
调优
num-executorsexecutor-memoryexecuto...
赞
踩
article
Synapse
Spark
...
【代码】Synapse
Spark
。Synapse
Spark
rm -r dp203...
赞
踩
article
从
Spark
离线
数仓
到
Flink
实时
数仓
:实战指南...
咱先唠唠为啥要搞这个转变。在数据处理这旮旯,
离线
数仓
和
实时
数仓
那可太不一样了。
离线
数仓
就像老牛拉车,处理数据得等一阵子,...
赞
踩
article
Spark
Delta
Lake...
【代码】
Spark
Delta
Lake。
Spark
Delta
Lake rm -r ...
赞
踩
article
spark
shuffle
写操作——
BypassMergeSortShuffleWriter
...
每一个分区都生成一个临时文件,创建DiskBlockObjectWriter对象,放入partitionWriters。...
赞
踩
article
Spark
ML --
LightGBM
On
Spark
回归
LightGBM
Regressor示例...
向导MAVEN测试数据代码示例结果MAVEN
com
.
microsoft
.m...
赞
踩
article
spark
根据
parquet
文件 建表
_
spark
-
shell
根据
parquet
文件建表和写...
def save
_
table(
spark
: SparkSession, partitionCondition:Strin...
赞
踩
article
[机器学习]
LightGBM
on
Spark
(MML
Spark
) 使用完全手册_
spark
l...
一
Spark
上训练模型优势与劣势(1)机器学习算法一般都有很多个步骤迭代计算的过程,机器学习的计算需要在多次迭代后获得...
赞
踩
article
Spark
Streaming
原理与代码实例讲解_
spark
streaming
大
数据处理
项目
源代码
...
Spark
Streaming
是Apache
Spark
生态系统中的核心组件之一,是建立在
Spark
Core之上的实...
赞
踩
article
spark
withColumn
的
使用
(笔记)...
withColumn
():是Apache Spark中用于DataFrame操作
的
函数之一,它
的
作用是在DataFram...
赞
踩
article
2024年最全[新星
计划
]通过
扩展
Spark
SQL
,
打造自己
的
大
数据分析
引擎(3)
,
2024年...
Spark
Strategies包含了一系列特定
的
Strategies
,
这些Strategies是继承自QueryPlan...
赞
踩
article
[原]
RStudio
Spark
/
Leaflet
与
GIS
最佳
实践...
近年来,基于
Spark
的大数据并行计算方案日渐成熟,在
GIS
领域有了很多
最佳
实践。过去,大多数数据分析师可能都是基于...
赞
踩
article
Spark
Streaming
基于
kafka
的
Direct
详解_
sparkstreaming
和ka...
本博文主要包括一下内容: 1,
Spark
Streaming
on Kafka
Direct
工作原理机制 2,
Spark
S...
赞
踩
article
【
Spark
MLlib
】(五)
随机
森林
(
Random
Forest
_
spark
随机
森林
项目...
随机
森林
就是构建多棵决策树投票,在构建多棵树过程中,引入
随机
性,一般体现在两个方面,一是每棵树使用的样本进行
随机
抽样,分...
赞
踩
article
大
数据
-计算引擎-
Spark
(一):概述【基于内存
的
大
数据
分析
引擎】【核心模块:
Spark
Core
...
Spark
是一种基于内存
的
快速、通用、可扩展
的
大
数据
分析
计算引擎。在之前
的
学习中,Hadoop
的
MapReduce...
赞
踩
article
大
数据
算法题(
flink
spark
sql
)_
flink
sql
练习题
...
1 求(event userid time)格式下不同event(比如浏览、点击、购买等行为)的pv uv。//最普通的...
赞
踩
article
Hadoop
生态简介,
Hive
、
Spark
、
HBase
等...
Hadoop
生态全景介绍,
Spark
、
Hive
、
HBase
等_hadoop生态hadoop生态 ...
赞
踩
相关标签
spark
大数据
分布式
scala
性能优化
big data
flink
实时数仓
离线数仓
标签体系
linux
SparkML
LightGBM
MML