Spark MLlib:我应该在拟合模型之前调用.cache吗?

时间:2018-02-27 18:39:03

标签: scala apache-spark apache-spark-mllib

想象一下,我正在训练Spark MLlib模型如下:

val traingData = loadTrainingData(...)
val logisticRegression = new LogisticRegression()

traingData.cache
val logisticRegressionModel = logisticRegression.fit(trainingData)

电话traingData.cache是否会在培训时提高效果,还是不需要?

ML算法的.fit(...)方法是否在内部调用cache / unpersist?

1 个答案:

答案 0 :(得分:2)

无需为Spark LogisticRegression(以及其他一些模型)调用timedelta64[ns]LogisticRegression中的.cache方法(由train调用)实现如下:

Predictor.fit(...)

后来......

override protected[spark] def train(dataset: Dataset[_]): LogisticRegressionModel = {
  val handlePersistence = dataset.rdd.getStorageLevel == StorageLevel.NONE // true if not cached-persisted
  train(dataset, handlePersistence)
}

这通常比对if (handlePersistence) instances.persist(StorageLevel.MEMORY_AND_DISK) 的自定义调用更有效,因为上面一行中的.cache只包含instances而不包含其余数据。