【发布时间】:2019-01-08 05:48:20
【问题描述】:
val logList: RDD[String] = ...
val errorLogs = logList.filter(_.contains("Error")).persist()
//first action
val first100 = errorLogs.take(100)
//second action
val count = errorLogs.count
persist 在这种情况下将如何工作?在以下代码的情况下
val errorLogs = logList.filter(_.contains("Error")).take(100)
Spark 不会扫描所有日志,因为Spark 知道我们只对 100 行日志感兴趣。但是当我们缓存这个 RDD 并对其调用多个操作时会发生什么,第一个操作只需要很少的记录,而后面的操作需要转换整个 RDD。
当第一个动作被调用时它会缓存记录吗?还是仅缓存调用第一个操作时第一个操作所需的部分记录?
【问题讨论】:
标签: scala apache-spark caching rdd