搜索
查看
编辑修改
首页
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
【面经】顺丰科技HR面(软件开发)_顺丰科技hr面试刷人吗
2
前端面试准备(一)_前端面试需要做什么准备
3
各种机器学习算法的应用场景分别是什么(比如朴素贝叶斯、决策树、K 近邻、SVM、逻辑回归最大熵模型)?...
4
Vue.js框架+Axios发送异步请求+elementui前端布局框架
5
Android开发如何学习,鸿洋推荐,必属精品!(1)
6
Spark on YARN部署模式保姆级教程_yarn模式进行spark的部署原理图
7
AWS云服务器的竞争优势
8
导出域控的ntds.dit文件_域控数据文件
9
Python(应用)网页爬虫之BS4(Beautiful Soup)用法及案例_bs4案例
10
大神们分享STM32的学习方法_stm32完全学习教程
当前位置:
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博客】
推荐阅读
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