Spark SQL 性能调整

对于某些工作负载,可以通过在内存中缓存数据或打开一些实验选项来提高性能。1,在内存中缓存数据Spark SQL可以通过调用spark.catalog.cacheTable("tableName")或使用内存中的列格式缓存表dataFrame.cache()。然后,Spark SQL将只扫描所需的列,并自动调整压缩以最大限度地减少内存使用和GC压力。你可以调用spark.catalog.uncacheTable("tableName")从内存中删除表。内存中缓存的配置可以使...
摘要由CSDN通过智能技术生成

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

1,在内存中缓存数据
       Spark SQL可以通过调用spark.catalog.cacheTable("tableName")或使用内存中的列格式缓存表dataFrame.cache()。然后,Spark SQL将只扫描所需的列,并自动调整压缩以最大限度地减少内存使用和GC压力。你可以调用spark.catalog.uncacheTable("tableName")从内存中删除表。
       内存中缓存的配置可以使用上面的setConf方法SparkSession或SET key=value使用SQL 运行 命令来完成。
属性名称    默认    含义
spark.sql.inMemoryColumnarStorage.compressed    true    设置为true时,Spark SQL将根据数据的统计信息自动为每列选择压缩编解码器。
spark.sql.inMemoryColumnarStorage.batchSize    10000    控制列式高速缓存的批量大小。较大的批量大小可以提高内存利用率和压缩率,但是在缓存数据时会面临OOM风险。

2,其他配置选项
以下选项也可用于调整查询执行的性能。在将来的版本中,这些选项可能会被弃用,因为会自动执行更多的优化。
属性名称    默认    含义
spark.sql.files.maxPartitionBytes    134217728(128 MB)    读取文件时打包到单个分区的最大字节数。
spark.sql.files.openCostInBytes    4194304(4 MB)    可以同时扫描以字节数量度量的打开文件的估计成本。将多个文件放入分区时使用。
最好是高估,那么小文件的分区会比大文件的分区快

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值