Spark SQL 可以通过调用 spark.cacheTable("tableName")
或者 dataFrame.cache()
以列存储格式缓存表到内存中。随后,Spark SQL 将会扫描必要的列,并自动调整压缩比例,以减少内存占用和 GC 压力。你可以调用 spark.uncacheTable("tableName") 来删除内存中的表。
你可以在 SparkSession 上使用 setConf 方法或在 SQL 语句中运行 SET key=value 命令,来配置内存中的缓存。
属性名 |
默认值 | 含义 |
---|---|---|
spark.sql.inMemoryColumnarStorage.compressed |
true | 当设置为 true 时,Spark SQL 将会基于数据的统计信息自动地为每一列选择单独的压缩编码方式。 |
spark.sql.inMemoryColumnarStorage.batchSize |
10000 | 控制列式缓存批量的大小。当缓存数据时,增大批量大小可以提高内存利用率和压缩率,但同时也会带来 OOM(Out Of Memory)的风险。 |