SparkSQL性能优化终极篇

前言

随着Spark版本的不断迭代,SparkSQL底层使用了各种优化技术,无论方便性、性能都已经超越了RDD。因此SparkSQL已经是最常用的Spark开发方式,这里把常用的SparkSQL性能优化技术进行汇总。

使用缓存

  • 缓存
    我们知道spark开发中如果有重复使用dataset/table的时候需要使用缓存来提高性能。比如:
    spark.catalog.cacheTable("view1")
    
    或者:
    spark.table("view1").cache()
    
    如果是dataset可以直接用:
    dataset.cache()
    

    注意:在一个比较复杂的spark程序中使用了缓存,当不需要的使用一定要记得移除缓存释放掉占用的资源:
    spark.catalog.uncacheTable(“view1”)

  • 缓存压缩
    建议可以根据实际内存情况调整下面一个参数:
    
    spark.conf.set("spark.sql.inMemoryColumnarStorage.compressed", true)
    
    
    该参数设置为true,Spark会根据数据统计信息,自动为每一列选择单独的压缩编码方式。这样会减少数据检索和内存使用。但是如果内存是足够的,那么默认false就可以,毕竟访问压缩后的数据,CPU还得进行解压缩,这样会或多或少影响效率。
  • 缓存批量大小
    建议可以根据实际内存情况调整下面一个参数:

你可能感兴趣的:(Spark最佳实战与性能优化,性能优化,spark,大数据,sparksql,调优)