spark讀取外部配置文件的方法

spark讀取外部配置文件的方法 

 

spark-submit  --files /tmp/fileName /tmp/test.jar

使用spark提交時使用--files參數,spark會將將本地的文件上傳的hdfs,而後分發給每一個executorjava

在程序中只須要使用文件名獲取數據shell

val    filePath ="fileName"測試

val    props =newProperties()this

props.load(newFileInputStream(filePath))spa

//發送到executor去執行scala

val  rdd=sc.parallelize(0to3)3d

rdd.foreach(index=>code

props.keySet().toArray().foreach(x=>println(x+"\t"+props.getProperty(x.toString)))blog

)資源

java的方式也是同樣的,在這就不寫了

 

 

三、--files   ./config.properties

 

讀通常文件:
val t: BufferedSource = scala.io.Source.fromFile("config.properties")
t.getLines().foreach(t=>println(t))

讀配置文件:

 

 

/*    val config = "config.properties"
    val prop = new Properties()
    prop.load(new FileInputStream(config))
    val keyset = prop.keySet().toArray()
    keyset.foreach(t=>println(t+" "+prop.getProperty(t.toString)))*/

 

 

 

配置文件類加載測試 配置採用 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包中;

 

在/tmp下建立a文件,內容爲:

this is a test data this is a test data this is a test data this is a test data this is a test data this is a test data this is a test data this is a test data this is a test data this is a test data this is  a test data

spark-shell --master yarn --files "/tmp/a"

能夠看到a文件被上傳到hdfs上了:

在代碼中讀取該文件,以下

能夠看見這個文件在excutor被正確讀取:且在兩個excutor上分別執行,一個打印了22行,一個打印11行,原文件總共11行;上述rdd公有三個元素,每一個元素遍歷時打印一遍,總共

3*11=33

相關文章
相關標籤/搜索