更新時(shí)間:2020-12-07 來(lái)源:黑馬程序員 瀏覽量:
Spark可以從Hadoop支持的任何存儲(chǔ)源中加載數(shù)據(jù)去創(chuàng)建RDD,包括本地文件系統(tǒng)和HDFS等文件系統(tǒng)。
接下來(lái),我們通過(guò)Spark中的SparkContext對(duì)象調(diào)用textFile()方法加載數(shù)據(jù)創(chuàng)建RDD。這里以Linux本地系統(tǒng)和HDFS分布式文件系統(tǒng)為例,講解如何創(chuàng)建RDD。
1. 從Linux本地文件系統(tǒng)加載數(shù)據(jù)創(chuàng)建RDD
在Linux本地文件系統(tǒng)中有一個(gè)名為test.txt的文件,具體內(nèi)容如文件1所示。
文件1 test.txt
1 hadoop spark 2 itcast heima 3 scala spark 4 spark itcast 5 itcast hadoop
在Linux本地系統(tǒng)讀取test.txt文件數(shù)據(jù)創(chuàng)建RDD,具體代碼如下:
scala> val test=sc.textFile("file:///export/data/test.txt") test: org.apache.spark.rdd.RDD[String]=file:///export/data/test.txt MapPartitionsRDD[1] at textFile at <console>:24
上述的代碼中,文件路徑中的“file://”表示從本地Linux文件系統(tǒng)中讀取文件?!皌est:org.apache.spark.rdd.RDD[String]...”是命令執(zhí)行后返回的信息,而test則是一個(gè)創(chuàng)建好的RDD。當(dāng)執(zhí)行textFile()方法后,Spark會(huì)從Linux本地文件test.txt中加載數(shù)據(jù)到內(nèi)存中,在內(nèi)存中生成了一個(gè)RDD對(duì)象(即test),并且這個(gè)RDD里面包含若干個(gè)String類(lèi)型的元素,也就是說(shuō),從test.txt文件中讀取出來(lái)的每一行文本內(nèi)容,都是RDD中的一個(gè)元素。
2. 從HDFS中加載數(shù)據(jù)創(chuàng)建RDD
假設(shè),在HDFS上的“/data”目錄下有一個(gè)名為test.txt的文件,該文件內(nèi)容與文件3-1相同。接下來(lái),我們通過(guò)加載HDFS中的數(shù)據(jù)創(chuàng)建RDD,具體代碼如下:
scala> val testRDD=sc.textFile("/data/test.txt") testRDD:org.apache.spark.rdd.RDD[String]=/data/test.txt MapPartitionsRDD[1] at textFile at <console>:24
執(zhí)行上述代碼后,從返回結(jié)果testRDD的屬性中看出RDD創(chuàng)建完成。在上述代碼中,我們通過(guò)textFile(“/data/test.txt”)方法來(lái)讀取HDFS上的文件,其中方法testFile()中的參數(shù)為“/data/test.txt”文件路徑,傳入的參數(shù)也可以為“hdfs://localhost:9000/data/test.txt”和“/test.txt”路徑,最終所達(dá)效果是一致的。
產(chǎn)品經(jīng)理如何做工具類(lèi)產(chǎn)品?
Scala算術(shù)操作符重載怎樣使用?與Java語(yǔ)法的區(qū)別有哪些
什么是數(shù)據(jù)倉(cāng)庫(kù)?Hive數(shù)據(jù)倉(cāng)庫(kù)特點(diǎn)簡(jiǎn)介
2020-12-07Sqoop是什么?Sqoop發(fā)展歷程簡(jiǎn)介
2020-12-07怎樣在hadoop虛擬機(jī)上安裝和配置JDK?
2020-12-02Linux系統(tǒng)如何配置虛擬機(jī)網(wǎng)絡(luò)?
2020-12-02HDFS讀寫(xiě)流程介紹,HDFS讀數(shù)據(jù)和寫(xiě)數(shù)據(jù)的原理分別是什么?
2020-12-01MapReduce程序如何設(shè)置本地運(yùn)行模式?
2020-12-01