原文鏈接:Spark中加載本地(或者hdfs)文件以及SparkContext實例的textFile使用
默認是從hdfs讀取文件,也可以指定sc.textFile("路徑").在路徑前面加上hdfs://表示從hdfs文件系統上讀
本地文件讀取 sc.textFile("路徑").在路徑前面加上file:// 表示從本地文件系統讀,如file:///home/user/spark/README.md
網上很多例子,包括官網的例子,都是用textFile來加載一個文件創建RDD,類似sc.textFile("hdfs://n1:8020/user/hdfs/input")
textFile的參數是一個path,這個path可以是:
1. 一個文件路徑,這時候只裝載指定的文件
2. 一個目錄路徑,這時候只裝載指定目錄下面的所有文件(不包括子目錄下面的文件)
3. 通過通配符的形式加載多個文件或者加載多個目錄下面的所有文件
第三點是一個使用小技巧,現在假設我的數據結構為先按天分區,再按小時分區的,在hdfs上的目錄結構類似於:
/user/hdfs/input/dt=20130728/hr=00/
/user/hdfs/input/dt=20130728/hr=01/
...
/user/hdfs/input/dt=20130728/hr=23/
具體的數據都在hr等於某個時間的目錄下面,現在我們要分析20130728這一天的數據,我們就必須把這個目錄下面的所有hr=*的子目錄下面的數據全 部裝載進RDD,於是我們可以這樣寫:sc.textFile("hdfs://n1:8020/user/hdfs/input /dt=20130728/hr=*/"),注意到hr=*,是一個模糊匹配的方式。