快取資料

什麼:

快取可以優化 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 (!!)