如何优化sql,spark sql 性能优化

 2023-09-24 阅读 25 评论 0

摘要:一 设置shuffle的并行度 我们可以通过属性spark.sql.shuffle.partitions设置shuffle并行度 二 Hive数据仓库建设的时候,合理设置数据类型,比如你设置成INT的就不要设置成BIGINT,减少数据类型不必要的内存开销 三 SQL优化 四 并行的处理查询结果 对于S

一 设置shuffle的并行度

我们可以通过属性spark.sql.shuffle.partitions设置shuffle并行度

 

二 Hive数据仓库建设的时候,合理设置数据类型,比如你设置成INT的就不要设置成BIGINT,减少数据类型不必要的内存开销

 

三 SQL优化

 

四 并行的处理查询结果

对于Spark SQL查询的结果,如果数据量比较大,比如超过1000条,那么就不要使用collect到driver再处理,使用foreach算子并行处理查询结果

 

五 缓存表

对于一条SQL语句中可能多次使用到的表,可以对其进行缓存,使用SQLContext.cacheTable(tableName)或者DataFrame.cache即可。Spark SQL会用内存 列存储的格式进行表的缓存。然后SparkSQL就可以仅仅扫描需要使用的列,并且自动优化压缩,来最小化内存使用和GC开销。可以通过spark.sql.inMemoryColumnarStorage.batchSize这个参数,默认10000,配置列存储单位

 

六 广播JOIN表

spark.sql.autoBroadcastJoinThreshold,默认10485760(10M),在内存够用的情况下,提高其大小,可以将join中的较小的表广播出去,而不用进行网络数据传输

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/93094.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息