1. 程式人生 > >Spark本地檔案讀寫

Spark本地檔案讀寫

當資料量大時,使用分散式的儲存系統也會更可靠,所以使用 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
  }
}