当数据量大时,使用分布式的存储系统也会更可靠,所以使用 Spark 时所用到的源数据大多数会从 HDFS 或 Hbase 得到。
但对于数据量较小的文件,比如在商品推荐系统中需要额外照顾某批商品,或者是算法中生成的一些关于类目的信息,又或者是粗排算法商品的排序值,我们完全可以把数据存在 driver 服务器中。
除了读写更高效外,保存在本地的好处是可以更方便的查看和修改,需要时下载文件也会比下载 HDFS 文件方便。
由于仅在 driver 服务器中进行读写操作,所以用 scala 就能完成任务,读写的两段函数如下。
import java.io.{File, PrintWriter}
import scala.io.Source
object LocalFileOperator {
/**
* 保存数据至本地服务器
* @param context
* @param fileName
*/
def writeFile(context: List[String],fileName: String): Unit ={
val writer = new PrintWriter(new File(fileName))
for (x <- context){
writer.write(x)
writer.write("\n")
}
writer.close()
}
/**
* 从本地读取文件
* @param fileName
* @return
*/
def readLocalFile(fileName: String): List[String] ={
val src = Source.fromFile(fileName).getLines()
(for (i <- src) yield i.trim).toList
}
}