一些常用的Spark SQL调优技巧

本文介绍了Spark SQL调优的一些常用技巧,包括使用`cache`和`uncache`缓存表以减少重复扫描,调整`spark.sql.shuffle.partitions`参数优化Shuffle分区以提高并行性和资源利用,以及利用Broadcast Join减少数据交换,通过`spark.sql.autoBroadcastJoinThreshold`控制广播表的大小以提升性能。
摘要由CSDN通过智能技术生成

一些常用的Spark SQL调优技巧
  1. 使用缓存表
    在sparksql中,当我们创建表时,我们可以通过调用spark.catalog.cacheTable("tableName") 或者 dataFrame.cache()的方式将表缓存起来。这样Spark SQL将仅扫描所需的列,并自动调整压缩以最小化内存使用和GC压力。
    当你不需要缓存时,可以通过使用spark.catalog.uncacheTable("tableName")将其移除缓存。

    此外,我们还可以通过设置spark.sql.inMemoryColumnarStorage.batchSize来调整列缓存batch的大,例如在提交spark作业时候,指定以下参数:

     --conf "spark.sql.inMemoryColumnarStorage.batchSize=10000"
    

    较大的batch size可以提高内存利用率和压缩率,但在缓存数据时存在OOM风险。

  2. 调整Shuffle分区
    我可以通过调整在对数据进行shuffle或者aggregation操作时的分区数目来提高性能。
    分区数和reduce任务数是相同的。如果reducer具有资源密集型操作,那么增加shuffle分区将增加并行性,同时还可以更好地利用资源并最小化每个任务的负载。
    我们可以通过设置spark.sql.shuffle.partitions来调整spark sql作业中的shuffle分区数(默认值为200).
    例如在提交s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值