1. 程式人生 > >MR程式碼例項-wordcount

MR程式碼例項-wordcount

package com.tiger.test;


import java.io.IOException;
import java.util.StringTokenizer;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
import org.apache.log4j.Logger;


public class WordCountTest {
private static final Logger log = Logger.getLogger(WordCountTest.class);
public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
 private final static IntWritable one = new IntWritable(1);
 private Text word = new Text();
 public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
 log.info("Map key : " + key);
  log.info("Map value : " + value);
      StringTokenizer itr = new StringTokenizer(value.toString());
  while (itr.hasMoreTokens()) {
     String wordStr = itr.nextToken();
      word.set(wordStr);
     log.info("Map word : " + wordStr);
      context.write(word, one);
      }
 }
}

public static class IntSumReducer extends
     Reducer<Text, IntWritable, Text, IntWritable> {
 private IntWritable result = new IntWritable();


 public void reduce(Text key, Iterable<IntWritable> values,
         Context context) throws IOException, InterruptedException {
     log.info("Reduce key : " + key);
     log.info("Reduce value : " + values);
     int sum = 0;
     for (IntWritable val : values) {
         sum += val.get();
     }
     result.set(sum);
     log.info("Reduce sum : " + sum);
     context.write(key, result);
 }
}


public static void main(String[] args) throws Exception {
 Configuration conf = new Configuration();
 String[] otherArgs = new GenericOptionsParser(conf, args)
         .getRemainingArgs();
 if (otherArgs.length != 2) {
     System.err.println("Usage: WordCountTest <in> <out>");
     System.exit(2);
 }


 Job job = new Job(conf, "word count");
 job.setJarByClass(WordCountTest.class);


 job.setMapperClass(TokenizerMapper.class);
 job.setCombinerClass(IntSumReducer.class);
 job.setReducerClass(IntSumReducer.class);
 job.setOutputKeyClass(Text.class);
 job.setOutputValueClass(IntWritable.class);


 FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
 FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));


 System.exit(job.waitForCompletion(true) ? 0 : 1);
}

}

相關推薦

MR程式碼例項-wordcount

package com.tiger.test; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import

rabbitmq(一)搭建以及建立簡單的程式碼例項

使用Docker搭建的rabbitMqdocker pull拉取映象 docker pull rabbitmq:management 啟動映象 docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p

阻塞程式碼與非阻塞程式碼例項

阻塞程式碼例項 //阻塞程式碼例項 var fs=require('fs'); var data=fs.readFileSync('input.txt'); console.log(data.toString()); console.log("程式執行完畢!"); 非阻塞程式碼例項 //非阻塞

C++ 引用程式碼例項

#include <iostream> using namespace std; void fun(int &x) { printf("形式引數的值為:%d\n", x); printf("形式引數的地址為:%d\n", &x); x += 10; } v

基於內容的推薦演算法的實現程式碼例項

本次例項需要三個資料檔案 分別為節目及其所屬標籤型別的01矩陣;使用者--節目評分矩陣;使用者收視了的節目--標籤01矩陣。 可以直接下載下來使用https://download.csdn.net/download/qq_38281438/10757266 具體程式碼如下: #

SparkStreaming(7):例項-wordcount統計結果寫入到MySQL

一、功能概述 DStreams的輸出操作,即將DStreams輸出到對應的目的地。輸出操作包括:print、saveAsTextFiles、saveAsObjectFiles、saveAsHadoopFiles、foreachRDD。本例將使用foreachRDD把資料輸出到外部mysql資料庫

JAVA中OOAD(面向物件分析與設計依賴倒置原則)程式碼例項

簡介:什麼是依賴倒置原則? 軟體設計中,多層次之間相互依賴關係需要倒置為抽象類或介面,而不是直接依賴於具體的實現。 具體表現為: 1、上層模組不應該直接依賴下層實現,而應該依賴下層的抽象 2、每一個單獨的層次,抽象不應該依賴於細節,而細節應該依賴於抽象。 現在有一個使用者類UserBea

geotools 程式碼例項

前段時間的一個專案 本來用ae完成了種種的 查詢,空間分析等等功能的程式碼,但是不幸的是 這是一個web專案,無奈 ae各種錯誤,顯然ae放在server端是不好使的 無奈 一咬牙一跺腳 全部換 換成geotools  看文件 看api 從零 開始算是把 原來AE實現的東西 統統改了過來

通俗理解神經網路的對抗攻擊及keras程式碼例項

上一篇轉載的博文《神經網路中的對抗攻擊與對抗樣本》幫助我理解了神經網路學習的本質,以及對抗攻擊的來龍去脈。接下來在這篇文章:《忽悠神經網路指南:教你如何把深度學習模型騙得七葷八素》中進一步理解了神經網路中白箱攻擊,本博文擬在加深學習印象,並結合自己的一些理解對該文章將的一些內容做一個重梳理。

php直接製作裝逼神器程式碼例項

裝逼神器製作 描述:原生寫裝逼神器 裝逼神器需要的檔案 1.index.php 網頁檔案 2.style.css 前端介面樣式 3.yuantu.jpg 裝逼圖片原圖 4.thumb.php 生成裝逼圖片 5.config.json 配置檔案 index.php

白鷺引擎開關音訊程式碼例項

白鷺引擎 版本:5.2.8 描述:開啟和關閉音訊的程式碼例項 宣告物件 private bgm:egret.Sound;//放屁聲音 private bgmStop:egret.SoundChannel;//取消放屁 開啟音訊

白鷺本地資料儲存操作程式碼例項

白鷺引擎 版本:5.2.8 描述:白鷺本地資料儲存操作程式碼例項 本地資料的增刪改查函式 /** * 資料儲存函式 */ private save_key(key_name:string,key_value:string){

白鷺引擎定時器程式碼例項

白鷺引擎 版本:5.2.8 描述:實現定時器操作程式碼例項 全域性宣告 private timer:egret.Timer; private num; 函式中使用的程式碼片段 ptivate fun_num(){ this.ti

C# 星期相關程式碼例項

本文為引用文章 僅作整理自用 原文連結: https://www.cnblogs.com/yxyl/p/9992841.html @網咖看壓力大 從週一到週日的順序,獲取排序數值: int i = DateTime.Now.DayOfWeek - DayOfWeek.Monday; if

layui.msg指定時間後跳轉(程式碼例項)

在使用layui.msg()是,通常我們會有一個提示訊息,停留幾秒之後跳轉,用layui.msg的第二個引數就可以很簡單的實現,這裡馬克一下: //監聽提交 form.on('submit(formDemo)', function(data){ $.aj

使用wsimport命令生成webService客戶端程式碼例項

wsimport簡介 在JDK的bin資料夾中,有一個wsimport.exe工具,可依據wsdl檔案生成相應的類檔案,將生存在本地這些類檔案拷貝到需要使用的專案中,就可以像呼叫本地的類一樣呼叫webService提供的方法。該工具可以用於非Java的伺服器,如用C#編寫的WebService,

python_檔案操作程式碼例項

"""提示:程式碼中的內容均被註釋,請參考,切勿照搬""" 1 #檔案的開啟和關閉 2 ''' 3 檔案物件 = open('檔名','使用方式') 4 rt:讀取一個txt檔案 5 wt: 只寫開啟一個txt檔案,(如果沒有該檔案則新建該檔案)會覆蓋原有內容 6 at:開啟一

CIAffineTile 程式碼例項

macOS 1. NSString *sourceImagePath = [[NSBundle mainBundle] pathForResource:@"20" ofType:@"jpg"]; CIImage *sourceImg = [CIImage imageWit

程式碼例項

Test.java package Ke; import Ke.util; import java.sql.*; import java.util.Scanner; public class Test { static Connection conn; static Prepared

【智慧演算法】粒子群演算法(Particle Swarm Optimization)超詳細解析+入門程式碼例項講解

喜歡的話可以掃碼關注我們的公眾號哦,更多精彩盡在微信公眾號【程式猿聲】 01 演算法起源 粒子群優化演算法(PSO)是一種進化計算技術(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源於對鳥群捕食的行為研究 。該演算法最初是受到飛鳥叢集