@@ -173,6 +173,57 @@ setMethod("cache",
173173 rdd
174174 })
175175
176+ # ' Persist an RDD
177+ # '
178+ # ' Persist this RDD with the specified storage level. For details of the
179+ # ' supported storage levels, refer to
180+ # ' http://spark.apache.org/docs/latest/programming-guide.html#rdd-persistence.
181+ # '
182+ # ' @param rdd The RDD to persist
183+ # ' @param newLevel The new storage level to be assigned
184+ # ' @rdname persist
185+ # ' @export
186+ # ' @examples
187+ # '\dontrun{
188+ # ' sc <- sparkR.init()
189+ # ' rdd <- parallelize(sc, 1:10, 2L)
190+ # ' persist(rdd, "MEMORY_AND_DISK")
191+ # '}
192+ setGeneric ("persist ", function(rdd, newLevel) { standardGeneric("persist") })
193+
194+ # ' @rdname persist
195+ # ' @aliases persist,RDD-method
196+ setMethod ("persist ",
197+ signature(rdd = " RDD" , newLevel = " character" ),
198+ function (rdd , newLevel = c(" DISK_ONLY" ,
199+ " DISK_ONLY_2" ,
200+ " MEMORY_AND_DISK" ,
201+ " MEMORY_AND_DISK_2" ,
202+ " MEMORY_AND_DISK_SER" ,
203+ " MEMORY_AND_DISK_SER_2" ,
204+ " MEMORY_ONLY" ,
205+ " MEMORY_ONLY_2" ,
206+ " MEMORY_ONLY_SER" ,
207+ " MEMORY_ONLY_SER_2" ,
208+ " OFF_HEAP" )) {
209+ match.arg(newLevel )
210+ storageLevel <- switch (newLevel ,
211+ " DISK_ONLY" = J(" org.apache.spark.storage.StorageLevel" )$ DISK_ONLY(),
212+ " DISK_ONLY_2" = J(" org.apache.spark.storage.StorageLevel" )$ DISK_ONLY_2(),
213+ " MEMORY_AND_DISK" = J(" org.apache.spark.storage.StorageLevel" )$ MEMORY_AND_DISK(),
214+ " MEMORY_AND_DISK_2" = J(" org.apache.spark.storage.StorageLevel" )$ MEMORY_AND_DISK_2(),
215+ " MEMORY_AND_DISK_SER" = J(" org.apache.spark.storage.StorageLevel" )$ MEMORY_AND_DISK_SER(),
216+ " MEMORY_AND_DISK_SER_2" = J(" org.apache.spark.storage.StorageLevel" )$ MEMORY_AND_DISK_SER_2(),
217+ " MEMORY_ONLY" = J(" org.apache.spark.storage.StorageLevel" )$ MEMORY_ONLY(),
218+ " MEMORY_ONLY_2" = J(" org.apache.spark.storage.StorageLevel" )$ MEMORY_ONLY_2(),
219+ " MEMORY_ONLY_SER" = J(" org.apache.spark.storage.StorageLevel" )$ MEMORY_ONLY_SER(),
220+ " MEMORY_ONLY_SER_2" = J(" org.apache.spark.storage.StorageLevel" )$ MEMORY_ONLY_SER_2(),
221+ " OFF_HEAP" = J(" org.apache.spark.storage.StorageLevel" )$ OFF_HEAP())
222+
223+ .jcall(getJRDD(rdd ), " Lorg/apache/spark/api/java/JavaRDD;" , " persist" , storageLevel )
224+ rdd @ env $ isCached <- TRUE
225+ rdd
226+ })
176227
177228# ' Unpersist an RDD
178229# '
0 commit comments