version2.4.4
对于某些工作负载,可以通过在内存中缓存数据或打开某些实验选项来提高性能。
在内存中缓存数据
Spark SQL能够通过调用spark.catalog.cacheTable("tableName") or dataFrame.cache()来使用内存列式存储将表缓存于内存。然后,Spark SQL将仅扫描所需的列,并将自动调整压缩以最大程度地减少内存使用和GC压力。您可以调用spark.catalog.uncacheTable(“ tableName”)从内存中删除表。可以使用SparkSession上的setConf方法或通过使用SQL运行SET key = value命令来完成内存中缓存的配置。
属性名 | 默认值 | 含义 |
---|---|---|
spark.sql.inMemoryColumnarStorage.compressed |
true | 设置为true时,Spark SQL将根据数据统计信息自动为每一列选择一个压缩编解码器。 |
spark.sql.inMemoryColumnarStorage.batchSize | 10000 | 控制用于列式缓存的批处理的大小。 较大的批处理大小可以提高内存利用率和压缩率,但是有在缓 |