缓存数据

什么:

缓存可以优化 Spark 中的计算。缓存将数据存储在内存中,这是持久性的一种特殊情况。这里解释了在 Spark 中缓存 RDD 时会发生什么。

为什么:

基本上,缓存可以保存原始数据的临时部分结果 - 通常是在转换之后。因此,当你使用缓存的 RDD 时,访问已经转换的内存数据,而无需重新计算早期的转换。

怎么样:

下面是一个示例,当访问多次一次时,如何从内存存储中快速访问大数据 (此处为 3 GB big csv)

library(SparkR)
# next line is needed for direct csv import:
Sys.setenv('SPARKR_SUBMIT_ARGS'='"--packages" "com.databricks:spark-csv_2.10:1.4.0" "sparkr-shell"')
sc <- sparkR.init()
sqlContext <- sparkRSQL.init(sc)

# loading 3 GB big csv file:  
train <- read.df(sqlContext, "/train.csv", source = "com.databricks.spark.csv", inferSchema = "true")
cache(train)
system.time(head(train))
# output: time elapsed: 125 s. This action invokes the caching at this point.
system.time(head(train))
# output: time elapsed: 0.2 s (!!)