WordCount

sparkCore:算子實(shí)現(xiàn):


object WordCount {

def main(args: Array[String]):Unit = {

//創(chuàng)建

    val config =new SparkConf().setMaster("local[*]").setAppName("WC")

//創(chuàng)建SparkContext對(duì)象

    val sc =new SparkContext(config)

//讀取文件

    val lines:RDD[String] = sc.textFile("in")

//分解單詞

    val words:RDD[String] = lines.flatMap(_.split(" "))

val wordOne:RDD[(String,Int)] =  words.map((_,1))

val result:Array[(String,Int)] = wordOne.reduceByKey(_+_).collect()

result.foreach(println)

}

SparkSql 實(shí)現(xiàn):




object WordCount {

def main(args: Array[String]):Unit = {

val spark: SparkSession = SparkSession.builder()

.appName("wordCount")

.master("local[*]")

.getOrCreate()

//讀取數(shù)據(jù)

    val ds: Dataset[String] = spark.read.textFile("in/word.txt")

//引包释牺,不然無(wú)法調(diào)用flatMap()

    import spark.implicits._

//整理數(shù)據(jù) (切分壓平)

    val ds1: Dataset[String] = ds.flatMap(_.split(" "))

//構(gòu)建臨時(shí)表

    ds1.createTempView("word")

//執(zhí)行 SQL 語(yǔ)句野崇,結(jié)果倒序

    val df:DataFrame = spark.sql("select value,count(*) count from word group by value order by count desc")

//展示

    df.show()

//關(guān)閉

    spark.stop()

}

}

java 實(shí)現(xiàn):MapReduce

mapper

public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
     
    Text k =new Text();
    IntWritable v = new IntWritable(1);
//  @SuppressWarnings("unused")
    @Override
    protected void map(LongWritable key, Text value, Context context)
            throws IOException, InterruptedException {
         
        //  1 將一行內(nèi)容轉(zhuǎn)化為String
        String line = value.toString();
         
        // 2 切分
        String[] words = line.split(" ");
         
        // 3 循環(huán)寫出到下一個(gè)階段   寫
        for (String word : words) {
 
            k.set(word);
            context.write(k,v);//寫入
        }
    }
}  

reduce

public class WordCountReducer extends Reducer<Text, IntWritable, Text,IntWritable>{
     
    // hello 1
    // hello 1
     
    @Override
    //相同的進(jìn)來(lái)
    protected void reduce(Text key, Iterable<IntWritable> values,Context context)
            throws IOException, InterruptedException {
        //  1 匯總 單詞總個(gè)數(shù)
        int sum = 0;
        for (IntWritable count : values) {
            sum +=count.get();
        }
         
        // 2 輸出單詞的總個(gè)數(shù)
         
        context.write(key, new IntWritable(sum));
    }
}  

driver

public class WordCountDriver {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
 
        // 1獲取job信息
       Configuration configuration = new Configuration();
       Job job = Job.getInstance(configuration);
 
        // 2 獲取jar包位置
        job.setJarByClass(WordCountDriver.class);
 
        // 3 關(guān)聯(lián)mapper he reducer
      job.setMapperClass(WordCountMapper.class);
      job.setReducerClass(WordCountReducer.class);
 
        // 4 設(shè)置map輸出數(shù)據(jù)類型
       job.setMapOutputKeyClass(Text.class);
       job.setMapOutputValueClass(IntWritable.class);
 
        // 5 設(shè)置最終輸出類型
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        
        // 6 設(shè)置數(shù)據(jù)輸入 輸出文件的 路徑
        FileInputFormat.setInputPaths(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
         
        // 7提交代碼
        boolean result = job.waitForCompletion(true);
        System.exit(result?0:1);
    }
}  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市袜炕,隨后出現(xiàn)的幾起案子锰扶,更是在濱河造成了極大的恐慌惜颇,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件少辣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡羡蛾,警方通過(guò)查閱死者的電腦和手機(jī)漓帅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)痴怨,“玉大人忙干,你說(shuō)我怎么就攤上這事±嗽澹” “怎么了捐迫?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)爱葵。 經(jīng)常有香客問我施戴,道長(zhǎng)反浓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任赞哗,我火速辦了婚禮雷则,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肪笋。我一直安慰自己月劈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布藤乙。 她就那樣靜靜地躺著猜揪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坛梁。 梳的紋絲不亂的頭發(fā)上而姐,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音罚勾,去河邊找鬼毅人。 笑死,一個(gè)胖子當(dāng)著我的面吹牛尖殃,可吹牛的內(nèi)容都是我干的丈莺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼送丰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缔俄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起器躏,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤俐载,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后登失,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體遏佣,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年揽浙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了状婶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡馅巷,死狀恐怖膛虫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钓猬,我是刑警寧澤稍刀,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站敞曹,受9級(jí)特大地震影響账月,放射性物質(zhì)發(fā)生泄漏综膀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一捶障、第九天 我趴在偏房一處隱蔽的房頂上張望僧须。 院中可真熱鬧,春花似錦项炼、人聲如沸担平。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)暂论。三九已至,卻和暖如春拌禾,著一層夾襖步出監(jiān)牢的瞬間取胎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工湃窍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闻蛀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓您市,卻偏偏與公主長(zhǎng)得像觉痛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茵休,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345