Spark Sql 性能调优

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

在内存中缓存数据

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

spark.sql.inMemoryColumnarStorage.compressed 设置为true时,Spark SQL将根据数据统计信息自动为每列选择压缩编解码器。
spark.sql.inMemoryColumnarStorage.batchSize 10000 控制柱状缓存的批次大小。较大的批处理大小可以提高内存利用率和压缩率,但在缓存数据时会产生OOM风险。
其他配置选项

以下选项也可用于调整查询执行的性能。由于会自动执行更多优化,因此可能会在将来的版本中弃用这些选项。
物业名称 默认 含义

spark.sql.files.maxPartitionBytes 134217728(128 MB) 读取文件时打包到单个分区的最大字节数。
spark.sql.files.openCostInBytes 4194304(4 MB) 可以在同一时间扫描通过字节数测量的打开文件的估计成本。将多个文件放入分区时使用。最好过度估计,然后使用较小文件的分区将比具有较大文件的分区(首先安排的分区)更快。
spark.sql.broadcastTimeout 300 广播连接中广播等待时间的超时(以秒为单位)
spark.sql.autoBroadcastJoinThreshold 10485760(10 MB) 配置在执行连接时将广播到所有工作节点的表的最大大小(以字节为单位)。通过将此值设置为-1,可以禁用广播。请注意,目前只有ANALYZE TABLE COMPUTE STATISTICS noscan运行该命令的Hive Metastore表支持统计信息 。
spark.sql.shuffle.partitions 200 配置为连接或聚合数据移动数据时要使用的分区数。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值