示例一:統計所有單詞出現的次數
1、在本地創建文件並上傳到hdfs中
#vin data.txt //將文件上傳到hadoop的根目錄下 #hdfs dfs -put data.txt /
2、在spark中,創建一個RDD並讀取文件
%spark var data = sc.textFile("/data.txt") data.collect
3、將讀取到的文本使用flatMap方法(數據流映射)組合split方法拆分為單個單詞
//注意:split("")引號中沒有空格是以單個字母的形式拆分
val splitData = data.flatMap(line => line.split(" ")) splitData.collect
4、對每個單詞執行映射k-value,k是具體的單詞,value都設置為1
var mapData = splitData.map(word => (word,1)) mapData.collect
5、使用reduceByKey()方法進行聚合累加並輸出結果
var reduceData = mapData.reduceByKey(_+_) reduceData.collect
示例二:統計指定單詞出現的次數
//統計本文中"is"出現的次數
data.filter(line => line.contains("is")).count()
示例三:(更復雜的RDD操作)找到文本的一行中最多的單詞數量
data.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
tip:對於大型數據,可以將數據先加入緩存
例如:
data.cache()
data.count()