def main(args: Array[String]): Unit = {
//1.配置 spark 任務相關信息
val sparkConf = new SparkConf();
//配置人物名字
sparkConf.setAppName("word count")
//配置運行模式:本地模式
sparkConf.setMaster("local[*]")
//2.運行 spark 程序的上下文環境
val sc = new SparkContext(sparkConf)
//配置 hdfs 集羣位置
sc.hadoopConfiguration.set("fs.defaultFS", "hdfs://ns1")
sc.hadoopConfiguration.set("dfs.nameservices", "ns1")
sc.hadoopConfiguration.set("dfs.ha.namenodes.ns1", "nn1,nn2")
sc.hadoopConfiguration.set("dfs.namenode.rpc-address.ns1.nn1", "master:9000")
sc.hadoopConfiguration.set("dfs.namenode.rpc-address.ns1.nn2", "slave1:9000")
sc.hadoopConfiguration.set("dfs.client.failover.proxy.provider.ns1", "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider")
// //讀取文件內容,以行爲單位放入 doc 集合
// val doc = sc.textFile("/ip-action.dat")
//
// //去除每行的單詞並壓平
// val words = doc.flatMap(_.split("\\s+"))
//
// //以單詞爲key ,數字 1 爲 value 進行輸出
// val map = words.map((_, 1))
//
// //以單詞爲 key 進行聚合,通過自定義函數處理聚合後的 value
// val reduce = map.reduceByKey(_ + _)
//
// //保存計算結果到hdfs
// reduce.saveAsTextFile("/word-count-7")
//簡化版
sc.textFile("/ip-action.dat")
.flatMap(_.split("\\s+").map((_, 1)))
.reduceByKey(_ + _)
// .collect()//計算結果收集到內存中
.take(10)//取前 10 條數據
.foreach({ //遍歷輸出計算結果
println(_)
})
//3.關閉sc
sc.stop()
}
使用Scala編寫Map Reduce的模板
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.