CacheTableCommand Runnable Logical Command¶
When <CacheTableCommand
creates a DataFrame followed by registering a temporary view for the optional query
.
CACHE LAZY? TABLE [table] (AS? [query])?
CacheTableCommand
requests the session-specific Catalog
to cache the table.
Note
CacheTableCommand
uses SparkSession
to access the Catalog
.
If the caching is not LAZY
(which is not by default), CacheTableCommand
creates a DataFrame for the table and counts the rows (that will trigger the caching).
Note
CacheTableCommand
uses a Spark SQL pattern to trigger DataFrame caching by executing count
operation.
val q = "CACHE TABLE ids AS SELECT * from range(5)"
scala> println(sql(q).queryExecution.logical.numberedTreeString)
00 CacheTableCommand `ids`, false
01 +- 'Project [*]
02 +- 'UnresolvedTableValuedFunction range, [5]
// ids table is already cached but let's use it anyway (and see what happens)
val q2 = "CACHE LAZY TABLE ids"
scala> println(sql(q2).queryExecution.logical.numberedTreeString)
17/05/17 06:16:39 WARN CacheManager: Asked to cache already cached data.
00 CacheTableCommand `ids`, true