
把数据缓存到内存,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 |