Spark本地檔案讀寫
阿新 • • 發佈:2018-12-13
當資料量大時,使用分散式的儲存系統也會更可靠,所以使用 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 } }