1. 程式人生 > >【spark】使用scala讀取專案中的檔案的方法

【spark】使用scala讀取專案中的檔案的方法

在IDAL下面讀取本地檔案,可以使用絕對路徑也可以使用相對路徑

一,直接路徑的表達:

val path2 ="E:\\data\\TEST1.txt"
val data = sc.textFile(path2)
data.foreach(println)
直接將檔案的絕對路徑放在某個變數中,然後再使用textFile()讀取裡面的內容

但是一般開發都採用這種方法吧

二,相對路徑

在使用maven建立的專案中,在編譯時會在專案下生成target資料夾,其下面的class資料夾裡面生成src->main中的資料如resources中的檔案或者是scala資料夾下面的.scala檔案的“倒影”。

所以尋找檔案的相對位置時,要先找到target這個目錄下的地址,然後再找具體的檔案。

下面這三條語句都能找到這個地址:

val resource1: URL = Test.getClass.getClassLoader.getResource("")
    val resource2: URL = MyRouteMain.getClass.getResource("")
    val resource3: URL = MyRouteMain.getClass.getResource("/")
    println("resource1 => " + resource1)
    println("resource2 => " + resource2)
    println("resource3 => " + resource3)

列印結果如下:
resource1 => file:/E:/mycode/Spark/mylearn/target/classes/
resource2 => file:/E:/mycode/Spark/mylearn/target/classes/org/
resource3 => file:/E:/mycode/Spark/mylearn/target/classes/

可見第一、三條語句尋找的是檔案class的地址,第二條語句具體的class所在的資料夾地址。然後通過:
val path3 = resource1+"data/hello.txt"
val data = sc.textFile(path3)
data.foreach(println)

來輸出檔案中的內容。