把数据缓存到内存,spark sql能够只扫描需要列并且会自动压缩数据,占用最小的内存和减小GC压力。这无需多言,内存远远要快于磁盘,spark效率比hive高这个就是一个主要原因。
- 缓存数据代码
spark.catalog.cacheTable("tableName")
或
dataFrame.cache()
- 释放缓存
spark.catalog.uncacheTable("tableName")
或
dataFrame.unpersist()
用完后一定要记得释放掉,不要空占的内存浪费资源。
-
内存相关参数
spark sql可以使用SparkSession的setConf方法,或者使用sql命令 set key=value的方法来配置内存中的缓存。主要的配置参数有两个:参数 默认值 含义 开始版本 spark.sql.inMemoryColumnarStorage.comp