【spark床头书系列】SparkSQL性能调优官网权威资料

这篇具有很好参考价值的文章主要介绍了【spark床头书系列】SparkSQL性能调优官网权威资料。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SparkSQL性能调优官网权威资料点击这里也可看全文


对于某些工作负载,可以通过将数据缓存在内存中或打开一些实验选项来提高性能。

在内存中缓存数据

Spark SQL可以使用内存中的列式格式缓存表格,通过调用spark.catalog.cacheTable("tableName")dataFrame.cache()方法。然后,Spark SQL将只扫描所需的列,并自动调整压缩以最小化内存使用和GC压力。可以调用spark.catalog.uncacheTable("tableName")dataFrame.unpersist()方法将表格从内存中移除。

可以使用SparkSession的setConf方法或使用SQL运行SET key=value命令来配置内存中缓存的方式。

以下是可以进行内存中缓存的配置选项:

属性名称 默认值 含义 版本
spark.sql.inMemoryColumnarStorage.compressed true 当设置为true时,Spark SQL将根据数据的统计信息自动为每列选择压缩编解码器。 1.0.1
spark.sql.inMemoryColumnarStorage.batchSize 10000 控制列式缓存的批处理大小。较大的批处理大小可以提高内存利用率和压缩效果,但在缓存数据时可能会导致OOM。 1.1.1

其他配置选项

以下选项也可用于调优查询执行的性能。随着自动进行更多优化,这些选项可能在未来版本中被弃用。

属性名称 默认值 含义 版本
spark.sql.files.maxPartitionBytes 134217728 (128 MB) 读取文件时将打包到单个分区中的最大字节数。此配置仅在使用基于文件的数据源(如Parquet、JSON和ORC)时有效。 2.0.0
spark.sql.files.openCostInBytes 4194304 (4 MB) 打开一个文件的估计成本,以可以在同一时间内扫描的字节数来衡量。这在将多个文件放入一个分区时使用。建议过度估计,这样小文件所在的分区将比较大的文件所在的分区更快(优先调度)。此配置仅在使用基于文件的数据源(如Parquet、JSON和ORC)时有效。 2.0.0
spark.sql.files.minPartitionNum 默认并行度 建议的(不保证)最小拆分文件分区数。如果未设置,默认值为spark.sql.leafNodeDefaultParallelism。此配置仅在使用基于文件的数据源(如Parquet、JSON和ORC)时有效。 3.1.0
spark.sql.files.maxPartitionNum None 建议的(不保证)最大拆分文件分区数。如果设置了此值,当初始分区数超过此值时,Spark将重新调整每个分区的大小,使初始分区数接近此值。此配置仅在使用基于文件的数据源(如Parquet、JSON和ORC)时有效。 3.5.0
spark.sql.broadcastTimeout 300 广播连接中广播等待时间的超时时间(以秒为单位)。 1.3.0
spark.sql.autoBroadcastJoinThreshold 10485760 (10 MB) 在执行连接操作时,配置表格的最大大小(字节数),当其小于此值时,将广播到所有的工作节点上。通过将此值设置为-1,可以禁用广播。注意,目前仅支持对运行了ANALYZE TABLE <tableName> COMPUTE STATISTICS noscan命令的Hive Metastore表进行统计。 1.1.0
spark.sql.shuffle.partitions 200 配置用于连接或聚合操作时要使用的分区数。 1.1.0
spark.sql.sources.parallelPartitionDiscovery.threshold 32 配置启用并行列出作业输入路径的阈值。如果输入路径的数量大于此阈值,则Spark将使用Spark分布式作业列出文件。否则,将回退到顺序列出。此配置仅在使用基于文件的数据源(如Parquet、ORC和JSON)时有效。 1.5.0
spark.sql.sources.parallelPartitionDiscovery.parallelism 10000 配置作业输入路径的最大并行列出数。如果输入路径的数量大于此值,则将其限制为此值。此配置仅在使用基于文件的数据源(如Parquet、ORC和JSON)时有效。 2.1.1

SQL查询的连接策略Hints提示

连接策略提示,即BROADCAST、MERGE、SHUFFLE_HASH和SHUFFLE_REPLICATE_NL,指示Spark在连接两个关系时使用指定的策略。例如,当在表格‘t1’上使用BROADCAST提示时,Spark优先选择广播连接(根据是否存在任何等值连接键,可能是广播哈希连接或广播嵌套循环连接),即使统计数据建议表格‘t1’的大小超过了配置spark.sql.autoBroadcastJoinThreshold

当在连接的两侧分别指定不同的连接策略提示时,Spark优先选择BROADCAST提示,然后是MERGE提示,然后是SHUFFLE_HASH提示,最后是SHUFFLE_REPLICATE_NL提示。当两侧都指定了BROADCAST提示或SHUFFLE_HASH提示时,Spark将根据连接类型和关系的大小选择构建一侧。

请注意,并不能保证Spark将选择提示中指定的连接策略,因为特定的策略可能不支持所有连接类型。文章来源地址https://www.toymoban.com/news/detail-807760.html

spark.table("src").join(spark

到了这里,关于【spark床头书系列】SparkSQL性能调优官网权威资料的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spark通过jdbc性能调优--采用分区的方式从oracle读数据

    spark通过jdbc读取Oracle,当数据量很大的时候会出现两个问题: 读取数据异常缓慢,甚至卡死 大表中进行操作也会出现OOM的问题 调优 常规的读取数据库的方式如下 常规jdbc读取表的时候只有一个分区在执行,也就是只有一个excutor在工作,没有把spark并行操作的特性发挥出来

    2023年04月14日
    浏览(49)
  • 【Kafka系列 04】Kafka 性能调优,怎么做?

    通常来说,调优是为了满足系统常见的非功能性需求。在众多的非功能性需求中,性能绝对是我们最关心的那一个。不同的系统对性能有不同的诉求,比如对于数据库用户而言,性能意味着请求的响应时间,用户总是希望查询或更新请求能够被更快地处理完并返回。 对 Kafk

    2024年03月13日
    浏览(55)
  • 【jvm系列-13】jvm性能调优篇---参数设置以及日志分析

    JVM系列整体栏目 内容 链接地址 【一】初识虚拟机与java虚拟机 https://blog.csdn.net/zhenghuishengq/article/details/129544460 【二】jvm的类加载子系统以及jclasslib的基本使用 https://blog.csdn.net/zhenghuishengq/article/details/129610963 【三】运行时私有区域之虚拟机栈、程序计数器、本地方法栈 https

    2024年02月06日
    浏览(89)
  • 【spark】SparkSQL

    什么是SparkSQL SparkSQL是Spark的一个模块,用于处理海量 结构化数据 为什么学习SparkSQL SparkSQL是非常成熟的海量结构化数据处理框架: 学习SparkSQL主要在2个点: SparkSQL本身十分优秀,支持SQL语言、性能强、可以自动优化、API简单、兼容HIVE等等 企业大面积在使用SparkSQL处理业务数

    2024年01月20日
    浏览(49)
  • Spark---SparkSQL介绍

    Shark是基于Spark计算框架之上且兼容Hive语法的SQL执行引擎,由于底层的计算采用了Spark,性能比MapReduce的Hive普遍快2倍以上,当数据全部load在内存的话,将快10倍以上,因此Shark可以作为交互式查询应用服务来使用。除了基于Spark的特性外,Shark是完全兼容Hive的语法,表结构以及

    2024年01月21日
    浏览(44)
  • Spark(16):SparkSQL之DataSet

    目录 0. 相关文章链接 1. DataSet的定义 2. 创建DataSet 2.1. 使用样例类序列创建 DataSet 2.2. 使用基本类型的序列创建 DataSet 2.3. 注意 3. RDD 转换为 DataSet 4. DataSet 转换为 RDD  Spark文章汇总  DataSet 是具有强类型的数据集合,需要提供对应的类型信息。 在实际使用的时候,很少用到

    2024年02月13日
    浏览(44)
  • Spark(15):SparkSQL之DataFrame

    目录 0. 相关文章链接 1. DataFrame的作用 2. 创建DataFrame 3. SQL 语法 4. DSL 语法 5. RDD 转换为 DataFrame 6. DataFrame 转换为 RDD  Spark文章汇总          Spark SQL 的 DataFrame API 允许我们使用 DataFrame 而不用必须去注册临时表或者生成 SQL 表达式。DataFrame API 既有 transformation 操作也有

    2024年02月13日
    浏览(41)
  • 【SparkSQL】SparkSQL的运行流程 & Spark On Hive & 分布式SQL执行引擎

    【大家好,我是爱干饭的猿,本文重点介绍、SparkSQL的运行流程、 SparkSQL的自动优化、Catalyst优化器、SparkSQL的执行流程、Spark On Hive原理配置、分布式SQL执行引擎概念、代码JDBC连接。 后续会继续分享其他重要知识点总结,如果喜欢这篇文章,点个赞👍,关注一下吧】 上一篇

    2024年02月04日
    浏览(48)
  • Spark Streaming 编程权威使用指南

    注意:本文档为Spark的旧版本Streaming引擎。Spark Streaming 不再更新,是一个遗留项目。在Spark中有一种新的、更易用的流处理引擎,称为结构化流式处理。您应该使用Spark结构化流处理来开发流式应用和流水线。请参阅结构化流式处理编程指南。 Spark Streaming 是 Spark 核心 API 的扩

    2024年02月04日
    浏览(53)
  • spark第四章:SparkSQL基本操作

    spark第一章:环境安装 spark第二章:sparkcore实例 spark第三章:工程化代码 spark第四章:SparkSQL基本操作 接下来我们学习SparkSQL他和Hql有些相似。Hql是将操作装换成MR,SparkSQL也是,不过是使用Spark引擎来操作,效率更高一些 以上是这次博客需要的所有依赖,一次性全加上。 一共

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包