- 概述
- 外部檔案加載方案測試
- 資源檔案打包入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
小結
- 讀取打包進入jar包的資源檔案,關鍵的相對路徑的設定
- 資源檔案夾必須命名為“resources”
- 目前沒試過調整“resources”,不知道将“resources”放到與/src平級的地方會如何