
46
3 章 RDD を使ったプログラミング
3-40
Scala
persist()
import org.apache.spark.storage._
val result = input.map(x => x * x)
result.persist(StorageLevel.DISK_ONLY)
println(result.count())
println(result.collect().mkString(","))
RDD
に対する
persist()
は、最初のアクションよりも前に呼んでいることに注意してくださ
い。
persist()
の呼び出し自体は、評価を強制的に実行しません。
メモリに収まらないデータをキャッシュしようとした場合、
Spark
は
Least Recently Used
(
LRU
)キャッシュポリシーを使い、古いパーティションを自動的に待避させます。メモリのみを
使用するストレージレベルの場合、そうなったパーティションは、次にアクセスされたときには
計算し直されます。ただし、メモリとディスクを使用するストレージレベルであれば、そのパー
ティションはディスクに書き出されます。すなわちどちらの場合でも、ユーザーは
Spark
が大量
にキャッシュしすぎてジョブが失敗することを心配する必要はありません。とはいえ、不要なデー
タをキャッシュすることで、有用なデータが待避させられ、再計算に時間をとられてしまうかもし
れません。
最後に、
RDD
には
unpersist()
というメソッドがあります。このメソッドを呼べば ...