首頁技術(shù)文章正文

不同系統(tǒng)如何加載數(shù)據(jù)創(chuàng)建RDD?

更新時間:2020-12-07 來源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif

  Spark可以從Hadoop支持的任何存儲源中加載數(shù)據(jù)去創(chuàng)建RDD,包括本地文件系統(tǒng)和HDFS等文件系統(tǒng)。

  接下來,我們通過Spark中的SparkContext對象調(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)中有一個名為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則是一個創(chuàng)建好的RDD。當(dāng)執(zhí)行textFile()方法后,Spark會從Linux本地文件test.txt中加載數(shù)據(jù)到內(nèi)存中,在內(nèi)存中生成了一個RDD對象(即test),并且這個RDD里面包含若干個String類型的元素,也就是說,從test.txt文件中讀取出來的每一行文本內(nèi)容,都是RDD中的一個元素。

  2. 從HDFS中加載數(shù)據(jù)創(chuàng)建RDD

  假設(shè),在HDFS上的“/data”目錄下有一個名為test.txt的文件,該文件內(nèi)容與文件3-1相同。接下來,我們通過加載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)建完成。在上述代碼中,我們通過textFile(“/data/test.txt”)方法來讀取HDFS上的文件,其中方法testFile()中的參數(shù)為“/data/test.txt”文件路徑,傳入的參數(shù)也可以為“hdfs://localhost:9000/data/test.txt”和“/test.txt”路徑,最終所達(dá)效果是一致的。



猜你喜歡:

產(chǎn)品經(jīng)理如何做工具類產(chǎn)品?

Scala算術(shù)操作符重載怎樣使用?與Java語法的區(qū)別有哪些

Linux系統(tǒng)如何配置虛擬機(jī)網(wǎng)絡(luò)?

黑馬程序員大數(shù)據(jù)培訓(xùn)課程 

分享到:
在線咨詢 我要報名
和我們在線交談!