Roe*_*rel 6 java caching apache-spark rdd
我正在构建一个通用函数,它接收RDD并对其进行一些计算.由于我在输入RDD上运行了多个计算,我想缓存它.例如:
public JavaRDD<String> foo(JavaRDD<String> r) {
r.cache();
JavaRDD t1 = r... //Some calculations
JavaRDD t2 = r... //Other calculations
return t1.union(t2);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,既然r是给了我它可能已经或可能没有被缓存.如果缓存,我再次呼吁缓存它,会引发创建缓存意味着,虽然新的一层t1和t2计算,我将有两个实例r在缓存中?或者火花会意识到r缓存的事实会忽略它吗?
Tza*_*har 13
没什么.如果你调用cache缓存的RDD,没有任何反应,RDD将被缓存(一次).像许多其他转换一样,缓存是懒惰的:
cache,RDD storageLevel设置为MEMORY_ONLYcache再次打电话时,它被设置为相同的值(没有变化)storageLevel,如果它需要缓存,它将缓存它.所以你很安全.
| 归档时间: |
|
| 查看次数: |
2511 次 |
| 最近记录: |