天天看點

spark/scala關于【資源檔案】加載方法概述外部檔案加載方案測試資源檔案打包入jar包中小結

  • 概述
  • 外部檔案加載方案測試
  • 資源檔案打包入jar包中
  • 小結

概述

在spark的client模式加載檔案

1 檔案存在于用戶端的本地(非hdfs):

對于這種本地檔案,可采用 Source. fromFile (LocalPath)方式加載,可加載本地檔案

note:采用 sc.textFile(“file:///path to the file/”)的發方式缺無法加載用戶端上的檔案(在雲公司的堡壘機上的測試結果)

後面采用的測試,根據《spark快速資料分析》P78,有說,采用 sc.textFile(“file:///path to the file/”),要求本地檔案必須存在叢集上的所有節點,且路徑相同

2 檔案存于HDFS:将檔案存與HDFS,然後在主程式中用 sc.textFile 加載即可

外部檔案加載方案測試

測試内容 說明 支援模式 加載方法
配置檔案類加載測試 配置采用 key=value 的形式 client/cluster 采用 sc.getConf.get 方法;配合submit 參數–properties-file 上傳配置檔案; 配置檔案key value 以空格為分隔符
配置檔案類加載測試 配置采用 key=value 的形式 client/cluster 采用java.util.Properties 方法;配置檔案打包到jar包裡; 配置檔案key value 以“=”為分隔符
資源檔案類加載測試 普通文本格式,非key value模式 client/cluster 采用scala.io.Source.fromFile 方法;資源檔案采用submit 參數–files 上傳;
資源檔案類加載測試 普通文本格式,非key value模式 client/cluster 采用scala.io.Source.fromFile和getResourceAsStream方法;資源檔案打包到jar包中;

資源檔案打包入jar包中

準備

1. 采用IDEA進行建構scala的maven工程,IDEA會自動生成目錄結構 {$projectRoot}/src/main/scala。

2. 在目錄/src/main下建立“resources”檔案夾,并右鍵“Make Directory as ”選擇“Resources Root”

3. 采用mvn對項目進行打包,這樣resources中的資源檔案就會打包競進入jar包。打包後資源檔案會與包的路徑同級

參考 http://stackoverflow.com/questions/18717038/adding-resources-in-intellij-for-java-project

小結

  1. 讀取打包進入jar包的資源檔案,關鍵的相對路徑的設定
  2. 資源檔案夾必須命名為“resources”
  3. 目前沒試過調整“resources”,不知道将“resources”放到與/src平級的地方會如何

繼續閱讀