SparkSQL-性能调优

祝福

在这个举国同庆的时刻,我们首先献上对祖国的祝福:

第一,我们感谢您给我们和平的环境,让我们能快乐生活

第二,祝福我们国家未来的路越走越宽广,科技更发达,人民更幸福

第三,我们会紧紧跟随您的脚步,一起为美好的未来奋斗

一、将数据缓存到内存

import spark.implicits._
import spark.sql

spark.catalog.cacheTable("personal_info")
spark.catalog.uncacheTable("personal_info")
val personalInfoDataFrame = sql("select name,age FROM personal_info")
personalInfoDataFrame.cache()
personalInfoDataFrame.unpersist()

cacheTable() 和 cache() 最终都调用了CacheManager的cacheQuery()

CacheManager对数据的缓存与RDD中的cache()是不同的,RDD中的cache()是的持久化级别是MEMORY_ONLY,而这里是MEMORY_AND_DISK,因为Spark任务重新计算底层表并将其缓存是昂贵的。

二、选项设置

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

spark.sql.files.maxPartitionBytes        默认:128M

解释:读取文件时打包到单个分区中的最大字节数。此配置仅在使用基于文件的源(如Parket、JSON和ORC)时有效。

spark.sql.files.openCostInBytes        默认值:4M

解释:打开一个文件的估计成本,以可以同时扫描的字节数来衡量。这是在将多个文件放入一个分区时使用的。最好过度估计,那么具有小文件的分区将比具有较大文件的分区(这是首先调度的)更快。此配置仅在使用基于文件的源(如Parket、JSON和ORC)时有效。

spark.sql.files.minPartitionNum        默认值:spark.sql.leafNodeDefaultParallelism

解释:建议的(不保证的)最小分割文件分区数如果未设置。此配置仅在使用基于文件的源(如Parquet、JSON和ORC)时有效。

spark.sql.files.maxPartitionNum        默认值:None

解释:建议的(不保证的)分割文件分区的最大数量。如果设置了,如果初始分区数超过此值,Spark将重新调整每个分区以使分区数接近此值。此配置仅在使用基于文件的源(如Parket、JSON和ORC)时有效。

spark.sql.broadcastTimeout        默认值:5*60 秒

解释:广播等待超时时间

spark.sql.autoBroadcastJoinThreshold        默认值:10M

解释:配置表的最大大小(以字节为单位),该表将在以下情况下广播到所有工作节点 执行连接。通过将此值设置为-1,可以禁用广播。请注意,目前

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值