Spark本地文件读写

2018-10-03  本文已影响143人  学习之术

当数据量大时,使用分布式的存储系统也会更可靠,所以使用 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
  }
}
上一篇 下一篇

猜你喜欢

热点阅读