1. 程式人生 > >hadoop入門經典:wordcount程式碼詳解

hadoop入門經典:wordcount程式碼詳解

package cn.yzx.bigdata.mr.wcemo;

import java.io.IOException;

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.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;


/*
 * 為啥要main方法:先啟動自己,然後把整個程式提交到叢集
 * 相當於yarn叢集的客戶端,yarn去分配運算資源,然後才能啟動
 * 以為是yarn的客戶端,所以要再次封裝mr程式的相關執行引數,指定jar包
 * 最後提交給yarn
 */
public class WordcountDriver {
	public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
		/*
		 * import org.apache.hadoop.mapreduce.xxxx
		 * import org.apache.hadoop.mapred.xxx  mapred是老版本的,我們用MapReduce 
		 */
		Configuration conf = new Configuration();
		/*conf.set("mapreduce.framework.name", "yarn");
		conf.set("yarn.resourcemanager.hostname","hadoop01");*/
		//給一些預設的引數
		Job job = Job.getInstance(conf);
		
		
		
		
		//指定本程式的jar包所在的本地路徑  把jar包提交到yarn
		job.setJarByClass(WordcountDriver.class);
		
		
		
		
		/*
		 * 告訴框架呼叫哪個類
		 * 指定本業務job要是用的mapper/Reducer業務類
		 */
		job.setMapperClass(WordcountMapper.class);
		job.setReducerClass(WordcountReduce.class);


		
		
		/*
		 * 指定mapper輸出資料KV型別
		 */
		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(IntWritable.class);
		
		//指定最終的輸出資料的kv型別  ,有時候不需要reduce過程,如果有的話最終輸出指的就是指reducekv型別  
		job.setOutputKeyClass(Text.class);
		job.setMapOutputValueClass(IntWritable.class);
		
		
		
		
		// 指定job的檔案輸入的原始目錄 
		//paths指你的待處理檔案可以在多個目錄裡邊
		//第一個引數是你給那個job設定  後邊的引數 逗號分隔的多個路徑 路徑是在hdfs裡的
		FileInputFormat.setInputPaths(job, new Path(args[0]));
		
		// 指定job 的輸出結果所在的目錄
		FileOutputFormat.setOutputPath(job, new Path(args[1]));	
		
		
		/*
		 * 找yarn通訊
		 * 將job中配置的引數,  以及job所用的java類所在的jar包提交給yarn去執行
		 */
		/*job.submit();*/
		// 引數表示程式執行完,告訴我們是否執行成功
		boolean res = job.waitForCompletion(true);
		System.exit(res?0:1);
		
	}
}

1.2 WordcountMapper 

相關推薦

hadoop入門經典wordcount程式碼

package cn.yzx.bigdata.mr.wcemo; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.ap

MVC入門——經典MVC登入例項--附完整程式碼

參考《JavaWeb開發實戰經典》 MVC是核心,是最重要的基礎! “有不少人一直問,是不是應該把框架(Struts、Spring、Hibernate等成為開發框架)開發作為學習重點,其實:框架只是一種很簡單的應用,而整個JavaEE的核心並不在框

Hadoop學習筆記MapReduce框架

object 好的 單點故障 提高 apr copy 普通 exce 代表性 開始聊mapreduce,mapreduce是hadoop的計算框架,我學hadoop是從hive開始入手,再到hdfs,當我學習hdfs時候,就感覺到hdfs和mapreduce關系的緊密。這個

SparkStream WordCount程式碼

下面我要引用的程式碼來自於sparkStream的官網案例,案例內容為從kafka讀取資料進行wordcount計算 package org.apache.spark.examples.streaming; import java.util.HashMap; import java.util.

C++卷積神經網路例項tiny_cnn程式碼(6)——average_pooling_layer層結構類分析

  在之前的博文中我們著重分析了convolutional_layer類的程式碼結構,在這篇博文中分析對應的下采樣層average_pooling_layer類:  一、下采樣層的作用  下采樣層的作用理論上來說由兩個,主要是降維,其次是提高一點特徵的魯棒性。在LeNet-5

SpringCloud入門(八) Zuul 過濾器

Zuul 過濾器 zuul 有四種過濾器型別,分別是: 1、Pre:過濾器在請求被路由之前呼叫。我們可利用這種過濾器實現身份驗證、在叢集中選擇請求的微服務、記錄除錯資訊等; 2、Routing:過濾器將請求路由到微服務。這種過濾器用於構建傳送給微服務的請求,並使用Apache HttpClient或Netfi

進階版Venn plotUpset plot入門實戰程式碼——UpSetR包介紹

        網上已有一些帖子講解了Upset plot的背景知識和實現方法,本文旨在從實戰角度出發,解讀Upset plot實現的一些途徑及其優劣勢以及如何通過upsetR包實現Upset plot的繪製,並提供程式碼和input格式示例。另博主在使用

《OpenCV3程式設計入門》——5.2.3 addWeighted()函式(線性混合)(附程式碼

addWeighted()函式用來計算兩個陣列(影象陣列)的加權和。 格式如下: void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray

koa2+webpack4+React+pm2純手工架子搭建,SSR專案入門教程以及流程指引手把手教你實現服務端首屏渲染SSR專案

本人全職喵姐,兼職程式設計師,才疏學淺,大神如果有好的idea能指點迷津的話感激不盡。以下專案為純手工搭建的Webpack4+React+KOA2+PM2前端豆腐渣工程,房子的簡陋模型,入門教程以及流程指引。後續要精裝修還是蓋茅草屋看你自己了……/微微笑(自帶表情包)……先學習…...

upset plot入門實戰程式碼——UpSetR包介紹

        網上已有一些帖子講解了Upset plot的背景知識和實現方法,本文旨在從實戰角度出發,解讀Upset plot實現的一些途徑及其優劣勢以及如何通過upsetR包實現Upset plot的繪製,並提供程式碼和input格式示例。另博主在使用中發現一處報錯,尚不

【Gans入門】Pytorch實現Gans程式碼【70+程式碼

簡述 由於科技論文老師要求閱讀Gans論文並在網上找到類似的程式碼來學習。 程式碼來源 程式碼含義概覽 這個大致講講這個程式碼實現了什麼。 這個模型的輸入為:一些資料夾雜在x2x^2x2和2x2+12x^2+12x2+1這個兩個函式之間的一些資料。這個用線性

【TensorFlow】TFRecord資料集的製作讀取、顯示及程式碼

在跑通了官網的mnist和cifar10資料之後,筆者嘗試著製作自己的資料集,並儲存,讀入,顯示。 TensorFlow可以支援cifar10的資料格式, 也提供了標準的TFRecord 格式。  tensorflow 讀取資料, 官網提供了以下三種方法: 1 Feeding: 在

學習筆記強化學習之A3C程式碼

寫在前面:我是根據莫煩的視訊學習的Reinforce learning,具體程式碼實現包括Q-learning,SARSA,DQN,Policy-Gradient,Actor-Critic以及A3C。(莫凡老師的網站:https://morvanzhou.git

HadoopWordCount實戰

WorldCount可以說是MapReduce中的helloworld了,單詞計數主要完成的功能是:統計一系列文字檔案中每個單詞出現的次數,通過完成這個簡單程式讓讀者摸清 MapReduce 程式的基本結構。 特別是對於每一個階段的函式執行所產生的鍵值對。這裡對

Android四大元件之一 廣播接受者入門(附程式碼

BroadCastReceiver 廣播機制 BroadcastRecevier是Android的四大元件之一。一、廣播的分類: 1.普通廣播        當手機應用程式中一旦觸發了某件事情,那麼就會發送一段廣播,這段廣播時非同步的,能夠被所有的廣播監聽者接收,進行處理。

MyBatis學習(1)Mybatis使用入門案例

前言 MyBatis和Hibernate一樣,是一個優秀的持久層框架。已經說過很多次了,原生的jdbc操作存在大量的重複性程式碼(如註冊驅動,建立連線,建立statement,結果集檢測等)。框架的作用就是把這些繁瑣的程式碼封裝,這樣可以讓程式設計師專注於sq

Faster RCNN程式碼(三)資料處理的整體結構

在上一篇部落格中介紹了Faster RCNN網路結構的構建:Faster RCNN程式碼詳解(二):網路結構構建。網路結構是Faster RCNN演算法中最重要兩部分之一,這篇部落格將介紹非常重要的另一部分:資料處理。 資料處理是通過AnchorLoader類

Faster RCNN程式碼(四)關於anchor的前世今生

在上一篇部落格中介紹了資料處理的整體結構:Faster RCNN程式碼詳解(三):資料處理的整體結構。這一篇部落格介紹資料處理的細節——關於anchor的前世今生,程式碼在指令碼的:~/mx-rcnn/rcnn/io/rpn.py的assign_anchor函式

TensorFlow 從入門到精通(六)tensorflow.nn

看過前面的例子,會發現實現深度神經網路需要使用 tensorflow.nn 這個核心模組。我們通過原始碼來一探究竟。 # Copyright 2015 Google Inc. All Rights Reserved. # # Licensed under th

ROS 自定義訊息釋出器和訂閱器測試 +程式碼入門級)

既對ros tutorial 上的例子有了一定的瞭解之後,今天對釋出器和訂閱器程式碼(http://wiki.ros.org/cn/ROS/Tutorials/WritingPublisherSub