W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Spark 可以從任何一個 Hadoop 支持的存儲源創(chuàng)建分布式數(shù)據(jù)集,包括你的本地文件系統(tǒng),HDFS,Cassandra,HBase,Amazon S3等。 Spark 支持文本文件(text files),SequenceFiles 和其他 Hadoop InputFormat。
文本文件 RDDs 可以使用 SparkContext 的 textFile
方法創(chuàng)建。 在這個方法里傳入文件的 URI (機器上的本地路徑或 hdfs://
,s3n://
等),然后它會將文件讀取成一個行集合。這里是一個調(diào)用例子:
scala> val distFile = sc.textFile("data.txt")
distFile: RDD[String] = MappedRDD@1d4cee08
一旦創(chuàng)建完成,distFile
就能做數(shù)據(jù)集操作。例如,我們可以用下面的方式使用 map
和 reduce
操作將所有行的長度相加:distFile.map(s => s.length).reduce((a, b) => a + b)
。
注意,Spark 讀文件時:
textFile
,能很好地支持文件目錄,壓縮過的文件和通配符。例如,你可以使用 textFile("/my/文件目錄")
,textFile("/my/文件目錄/*.txt")
和 textFile("/my/文件目錄/*.gz")
。textFile
方法也可以選擇第二個可選參數(shù)來控制切片(slices)的數(shù)目。默認情況下,Spark 為每一個文件塊(HDFS 默認文件塊大小是 64M)創(chuàng)建一個切片(slice)。但是你也可以通過一個更大的值來設(shè)置一個更高的切片數(shù)目。注意,你不能設(shè)置一個小于文件塊數(shù)目的切片值。除了文本文件,Spark 的 Scala API 支持其他幾種數(shù)據(jù)格式:
SparkContext.sholeTextFiles
讓你讀取一個包含多個小文本文件的文件目錄并且返回每一個(filename, content)對。與 textFile
的差異是:它記錄的是每個文件中的每一行。sequenceFile[K, V]
方法創(chuàng)建,K 和 V 分別對應(yīng)的是 key 和 values 的類型。像 IntWritable 與 Text 一樣,它們必須是 Hadoop 的 Writable 接口的子類。另外,對于幾種通用的 Writables,Spark 允許你指定原聲類型來替代。例如: sequenceFile[Int, String]
將會自動讀取 IntWritables 和 Text。SparkContext.hadoopRDD
方法,它可以指定任意的 JobConf
,輸入格式(InputFormat),key 類型,values 類型。你可以跟設(shè)置 Hadoop job 一樣的方法設(shè)置輸入源。你還可以在新的 MapReduce 接口(org.apache.hadoop.mapreduce)基礎(chǔ)上使用 SparkContext.newAPIHadoopRDD
(譯者注:老的接口是 SparkContext.newHadoopRDD
)。RDD.saveAsObjectFile
和 SparkContext.objectFile
支持保存一個RDD,保存格式是一個簡單的 Java 對象序列化格式。這是一種效率不高的專有格式,如 Avro,它提供了簡單的方法來保存任何一個 RDD。Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: