Spark中的spark.sql.shuffle.partitions 和spark.default.parallelism参数设置默认partition数目

技本功|Hive优化之Spark执行引擎参数调优(二) Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的的一个点,因此掌握一些Hive调优是必不可少的一项技能。影响Hive效率的主要有数据倾斜、数据冗余、job的IO以及不同底层引擎配置情况和Hive本身参数和HiveSQL的执行等因素。本文主要结合实际业务情况,在使用Spark作为底层引擎时,通过一些常见的配置参数对报错任务进行调整优化。 下面从两个方面对复杂任务的优化: Spark资源参数优化 主要针对Spark运行过程中各个使用资源的地方, 阅读详情

当不跟随父对象partition数目的shuffle过程发生后,结果的partition会发生改变,这两个参数就是控制这类shuffle过程后,返回对象的partition的

经过实测,得到结论:

spark.sql.shuffle.partitions 作用于dataframe(val df2=df1.shuffle算子(如df1.orderBy()),的df2的partition就是这个参数的值)

spark.default.parallelism 作用于rdd(val rdd2=rdd1.shuffle算子(如rdd1.reduceByKey()),的rdd2的partition就是这个参数的值)

如何查看操作是否有shuffle?善用rdd的toDebugString函数,详见Spark中的shuffle算子

df也可以先df.rdd.toDebugString查看是否有shuffle发生

另外,也可以说:

  • spark.default.parallelism只有在处理RDD时有效。
  • spark.sql.shuffle.partitions则是只对SparkSQL(产生的是dataframe)有效。

修改方法:

代码中设定:

sqlContext.setConf("spark.sql.shuffle.partitions", "500")
sqlContext.setConf("spark.default.parallelism", "500")

提交任务时设定:

./bin/spark-submit --conf spark.sql.shuffle.partitions=500 --conf spark.default.parallelism=500

官方说明和默认值:

spark.default.parallelismFor distributed shuffle operations like reduceByKey and join, the largest number of partitions in a parent RDD. For operations like parallelize with no parent RDDs, it depends on the cluster manager:
  • Local mode: number of cores on the local machine
  • Mesos fine grained mode: 8
  • Others: total number of cores on all executor nodes or 2, whichever is larger
Default number of partitions in RDDs returned by transformations like join, reduceByKey, and parallelize when not set by user.
spark.sql.shuffle.partitions200(default)

Configures the number of partitions to use when shuffling data for joins or aggregations. 

该参数也决定着sc.sql(...)取数据时的并行度

跟随父对象partition数目的shuffle?比如df的join,df1.join(df2) 返回partition数目根据df1定




参考资料:

Configuration - Spark 2.1.0 Documentation

Performance Tuning - Spark 3.4.0 Documentation

https://www.jianshu.com/p/7442deb21ae0

performance - What is the difference between spark.sql.shuffle.partitions and spark.default.parallelism? - Stack Overflow

Spark分区方式详解 一、Spark数据分区方式简要              在Spark中,RDD(Resilient Distributed Dataset)是其最基本的抽象数据集,其中每个RDD是由若干个Partition组成。在Job运行期间,参与运算的Partition数据分布在多台机器的内存当中。这里可将RDD看成一个非常大的数组,其中Partition是数组中的每个元素,并且这些元素分布在多台机器中。... 阅读详情

相关推荐

spark.default.parallelism和

场景分区数来源读取数据(无shuffle)数据源文件块数或数据源分片数窄依赖算子(map/filter等)继承上游分区数显式分区操作(coalesce等)由算子参数决定宽依赖算子(join/groupBy等)触发shuffle,分区数由控制。

yekuishu的专栏 1198

大数据-Spark调优(一)

大数据-Spark调优(一) 分配更多的资源 分配更多的资源是性能优化调优的王道,就是增加和分配更多的资源,这对于性能和速度上的提升是显而易见的,基本上,在一定范围之内,增加资源与性能的提升,是成正比的;写完了一个复杂的spark作业之后,进行性能调优的时候,首先第一步,就是要来调节最优的资源配置; 在这个基础之上,如果说你的spark作业,能够分配的资源达到了你的能力范围的顶端之后,无法再分配更多的资源了,公司资源有限;那么才是...

海恋北斗星 2091

Spark 之 Shuffle & AQE

shuffle

zhixingheyi_tian的博客 2888

漫谈大数据 - Spark SQL详解,参数调优

SparkSQL详解,底层原理,执行过程,参数调优

引用原创内容标明出处即可 2万+

Matlab:常见涡旋光束仿真

代码: clc clear all close all %% 环形涡旋光束 N = 200; lambda = 632e-9; %波长为632nm k = 2*pi/lambda; %波数 w0 = 3; %束腰半径 x = linspace(-10,10,N); y = linspace(-10,10,N); [X,Y] = meshgrid(x,y); [t...

zzz997的博客 3万+

基于STM32与ESP8266的MQTT协议实现阿里云物联网平台远程LED控制

本文详细介绍了如何利用STM32单片机与ESP8266 Wi-Fi模块,通过MQTT协议连接阿里云物联网平台,实现远程控制LED灯的完整物联网项目。内容涵盖硬件连接、阿里云平台配置、MQTT协议与AT指令解析、STM32代码实战以及数据解析与调试技巧,为嵌入式开发者提供了一个清晰、实用的物联网入门实践指南。

svm4gardener的博客 791

谈谈spark.sql.shuffle.partitions和 spark.default.parallelism 的区别及spark并行度的理解

谈谈spark.sql.shuffle.partitions和 spark.default.parallelism 的区别及spark并行度的理解spark.sql.shuffle.partitions和 spark.default.parallelism 的区别spark并行度的理解如何设置spark.sql.shuffle.partitions和spark.default.parallelism的值 spark.sql.shuffle.partitions和 spark.default.parallel

weixin_43179522的博客 2万+

深入理解HanLP1.x,填平可能遇到的坑

提取指定数量的摘要。自定义词典为什么要单独领出来讲呢?因为在我们的业务开发中,可能分词的效果并不理想,需要定制自己的词库,索引更加常用。例如:小米su7特斯拉modelY比亚042025款6575767670908我们需要分出小米su72025款等词。我们分别看看用字典和不用字典的效果。

static_coder的博客 977

spark.sql.shuffle.partitions 和 spark.default.parallelism 的区别

在关于spark任务并行度的设置中,有两个参数我们会经常遇到,spark.sql.shuffle.partitions 和 spark.default.parallelism, 那么这两个参数到底有什么区别的? 首先,让我们来看下它们的定义 Property Name Default Meaning spark.sql.shuffle.partitions 200 Configure...

Lestat.Z.的博客 2万+

光学仿真案例(4) 基于纳米微粒激发平面波的米氏散射FDTD仿真模拟

本案例展示了一个基于纳米粒子激发平面波的米氏散射仿真模型(mie scattering),计算其散射和吸收截面、局域场增强和远场散射分布,同时将截面和远场结果与解析解进行了比较,验证了仿真模拟的准确性。

q895235273的博客 3593

<PLC><西门子><工控>西门子博图V18中使用SCL语言编写一个CRC16-modbus校验程序

西门子官方对于SCL语言的介绍如下:SCL 编程语言SCL 编程语言SCL(Structured Control Language,结构化控制语言)是一种基于 PASCAL 的高级编程语言。这种语言基于标准DIN EN 61131-3(国际标准为 IEC 1131-3)。根据该标准,可对用于可编程逻辑控制器的编程语言进行标准化。SCL 编程语言实现了该标准中定义的 ST 语言 (结构化文本) 的PLCopen 初级水平。语言元素。

用沸腾的热血,支付我们的人生吧! 1436

spark.sql.shuffle.partitions和spark.default.parallelism的区别

在关于spark任务并行度的设置中,有两个参数我们会经常遇到,spark.sql.shuffle.partitions 和 spark.default.parallelism, 那么这两个参数到底有什么区别的? 首先,让我们来看下它们的定义 Property Name Default Meaning spark.sql.shuffle.partitions 200 ...

weixin_30644369的博客 771

基于深度学习的茶叶等级检测识别系统:YOLOv10 + UI界面 + 数据集

YOLOv10是YOLO系列的最新版本,继承了YOLO模型的优点,并对速度和精度进行了优化。YOLOv10在目标检测中使用卷积神经网络(CNN)作为基础,通过改进网络结构和优化训练策略,实现了在更低的延迟下进行高精度的目标检测。本文详细介绍了基于YOLOv10的茶叶等级检测与识别系统的设计与实现过程。我们从数据集准备、模型训练与推理、UI界面设计等多个方面进行了详细讲解,并给出了相应的代码实现。通过本系统,我们可以高效地自动检测茶叶的等级,并通过UI界面直观地展示结果。

YOLO 765

spark.default.parallelism 在什么时候起作用,与spark.sql.shuffle.partitions有什么异同点?

异同主要影响 RDD 的初始并行度,而则专门控制 Spark SQL 中的 Shuffle 分区数。前者在非 SQL 的 RDD 操作中起作用,后者则仅对 SQL 或 DataFrame API 中的 Shuffle 操作生效。配置建议如果以 RDD 为主,则可以根据集群大小和任务负载调整。如果以 SQL 和 DataFrame 操作为主,特别是需要进行大量 Shuffle 的场景,可以适当调整来优化性能(如减少分区数以降低小任务开销,或增加分区数以加快数据处理速度)。

z1941563559的博客 1792

计算机视觉(角点检测)- 1 - Harris角点检测

计算机视觉(角点检测)-1.1 Harris角点检测学习前言 学习前言   今天更新一下计算机视觉的东西吧,哈哈哈o( ̄︶ ̄)o   关于角点检测呢,就是检测图像中角点的算法,常见的有四种常见的算法:Moravec角点检测算法、 Harris角点检测算法、Shi-Tomasi 算法、FAST角点检测算法,不过常用的就两种吧——Harris角点检测算法、Shi-Tomasi 算法(反正我基本上就只用到这两种,先着重介绍前面两种,后面再花世界介绍吧)(~ ̄▽ ̄)~ ...

qq_40374812的博客 1万+

YOLOv11改进 | 注意力篇 | YOLOv11引入CA注意力机制

摘要:最近关于移动网络设计的研究已经证明了通道注意力(例如,挤压和激励注意力)对于提升模型性能的显着有效性,但它们通常忽略了位置信息,而位置信息对于生成空间选择性注意力图很重要。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~3.2 在Extramodule里创建CA。在CA.py文件里添加给出的CA代码。

tsg6698的博客 2979

spark.sql.shuffle.partitions和spark.default.parallelism的深入理解

stack overflow链接 总结: 1.spark.default.parallelism只对RDD有效,对sparksql(DataFrame、DataSet)无效 2.spark.sql.shuffle.partitions对sparksql中的joins和aggregations有效,但其他的无效(对这种情况下,上述的两种配置都无效,我们应该怎么办呢?看第三点) 3.我们可以使用repartition算子对dataframe进行重分区。 ...

weixin_42307036的博客 4512

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【Spark2参数调优】submit Spark sql脚本并行度调优

spark2 submit Spark sql脚本并行度调优疑问:关于spark.default.parallelism现象 :每个executor所分配的core小于active task的数量解决:指定spark.sql.shuffle.partitions数量 都说程序员不配享受生活,最近几个月一直在吃“两条线”,白天挖焦煤,晚上扒火车,真是比铁道游击队还苦逼! 疑问:关于spark.d...

Jack_Roy的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Spark 的 partition(分区数)与 并行度(即RDD中task的个数)分别取决于什么?

虽然 spark.default.parallelism 是一个关键配置参数,但最终的分区数也会受到作业提交时指定的总核心数(spark.cores.max)和每个 Executor 的核心数(spark.executor.cores)的影响,因为这些参数共同决定了集群的并行计算能力。‌。

Christine_366的博客 494

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Spark Shuffle 分区原理

shuffle write 和 shuffle read 阶段的分区数由 spark.sql.shuffle.partitions 控制,默认 200。

weixin_58429418的博客 421

What is the difference between spark.sql.shuffle.partitions and spark.default.parallelism?

见:https://stackoverflow.com/questions/45704156/what-is-the-difference-between-spark-sql-shuffle-partitions-and-spark-default-pa

CARA的专栏 182

spark默认分区数

Spark中使用SparkSql进行shuffle操作,默认分区数是200个;参数配置是 --conf spark.sql.shuffle.partitions Spark进行RDD操作,默认分区数看机器的配置,一般是cores*executors --conf spark.default.parallelis 引自原文:https://blog.csdn.net/yolohohoh...

qq_38103657的博客 4155

[Spark]What's the difference between spark.sql.shuffle.partitions and spark.default.parallelism?

From the answerhere, spark.sql.shuffle.partitions configures the number of partitions that are used when shuffling data for joins or aggregations. spark.default.parallelism is the default number of...

weixin_30823683的博客 149
上一篇: Spark中的shuffle算子
下一篇: SparkContext did not initialize after waiting for 100000 ms
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值