缓存表
描述
CACHE TABLE
语句缓存表的内容或查询的输出,使用给定的存储级别。如果查询被缓存,将为此查询创建一个临时视图。这减少了将来查询时对原始文件的扫描。
语法
CACHE [ LAZY ] TABLE table_identifier
[ OPTIONS ( 'storageLevel' [ = ] value ) ] [ [ AS ] query ]
参数
-
惰性
仅在第一次使用表时缓存,而不是立即缓存。
-
table_identifier
指定要缓存的表或视图名称。表或视图名称可以选择性地带有数据库名称。
语法:
[ database_name. ] table_name
-
选项 ( ‘storageLevel’ [ = ] value )
OPTIONS
子句与storageLevel
键值对。当使用其他键而不是storageLevel
时,会发出警告。storageLevel
的有效选项有:-
NONE
-
DISK_ONLY
-
DISK_ONLY_2
-
DISK_ONLY_3
-
MEMORY_ONLY
-
MEMORY_ONLY_2
-
MEMORY_ONLY_SER
-
MEMORY_ONLY_SER_2
-
MEMORY_AND_DISK
-
MEMORY_AND_DISK_2
-
MEMORY_AND_DISK_SER
-
MEMORY_AND_DISK_SER_2
-
OFF_HEAP
当为
storageLevel
设置无效值时,会抛出异常。如果未通过OPTIONS
子句显式设置storageLevel
,则默认的storageLevel
设置为MEMORY_AND_DISK
。 -
-
查询
生成要缓存的行的查询。它可以是以下格式之一:
-
一个
SELECT
语句 -
一个
TABLE
语句 -
一个
FROM
语句
-
一个
示例
CACHE TABLE testCache OPTIONS ('storageLevel' 'DISK_ONLY') SELECT * FROM testData;