MapReduce程式設計例項(三)
前提準備:
MapReduce程式設計例項:
輸入:
2013-11-01 aa
2013-11-02 bb
2013-11-03 cc
2013-11-04 aa
2013-11-05 dd
2013-11-06 dd
2013-11-07 aa
2013-11-09 cc
2013-11-10 ee
2013-11-01 bb
2013-11-02 33
2013-11-03 cc
2013-11-04 bb
2013-11-05 23
2013-11-06 dd
2013-11-07 99
2013-11-09 99
2013-11-10 ee
.....
.....
.....
資料重複,map中每一行做為一個key,value值任意,經過shuffle之後輸入到reduce中利用key的唯一性直接輸出key
程式碼太簡單,不解釋,上程式碼:
輸出結果package com.t.hadoop; import java.io.IOException; import java.util.HashSet; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; 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; /** * 資料去重 * @author daT
[email protected] * */ public class Dedup { public static class MyMapper extends Mapper<Object, Text, Text, Text>{ @Override protected void map(Object key, Text value, Context context) throws IOException, InterruptedException { context.write(value, new Text("")); } } public static class MyReducer extends Reducer<Text, Text, Text, Text>{ @Override protected void reduce(Text key, Iterable<Text> value, Context context) throws IOException, InterruptedException { context.write(key, new Text("")); } } public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException{ Configuration conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); if(otherArgs.length<2){ System.out.println("parameter errors!"); System.exit(2); } Job job = new org.apache.hadoop.mapreduce.Job(conf, "Dedup"); job.setJarByClass(Dedup.class); job.setMapperClass(MyMapper.class); job.setCombinerClass(MyReducer.class); job.setReducerClass(MyReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); System.exit(job.waitForCompletion(true)?0:1); } }
2013-11-01 aa
2013-11-01 bb
2013-11-02 33
2013-11-02 bb
2013-11-03 cc
2013-11-03 cc
2013-11-04 98
2013-11-04 aa
2013-11-04 bb
2013-11-05 23
2013-11-05 93
2013-11-05 dd
2013-11-06 99
2013-11-06 dd
2013-11-07 92
2013-11-07 99
2013-11-07 aa
2013-11-09 99
2013-11-09 aa
2013-11-09 cc
2013-11-10 ee
相關推薦
MapReduce程式設計例項(三)
前提準備: MapReduce程式設計例項: 輸入: 2013-11-01 aa 2013-11-02 bb 2013-11-03 cc 2013-11-04 aa 2013-11-05 dd 2013-11-06 dd 2013-11-07
MapReduce程式設計例項(六)
package com.t.hadoop; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import
MapReduce程式設計例項(一)
前提準備: MapReduce程式設計例項: 開發示例:WordCount 本文例詳細的介紹如何在整合環境中執行第一個MapReduce程式 WordCount,以及WordCount程式碼分析 新建MapReduce專案: Finish生成
hadoop之mapreduce程式設計例項(系統日誌初步清洗過濾處理)
剛剛開始接觸hadoop的時候,總覺得必須要先安裝hadoop叢集才能開始學習MR程式設計,其實並不用這樣,當然如果你有條件有機器那最好是自己安裝配置一個hadoop叢集,這樣你會更容易理解其工作原理。我們今天就是要給大家演示如何不用安裝hadoop直接除錯程式設計MapR
大數據入門第八天——MapReduce詳解(三)
大數 blog eve 分享圖片 shuf open src hid span 1/mr的combiner 2/mr的排序 3/mr的shuffle 4/mr與yarn 5/mr運行模式 6/mr實現join 7/mr全局圖
Linux串列埠程式設計教程(三)——串列埠程式設計詳(原始碼)解:http://blog.csdn.net/u011192270/article/details/48174353 Linux下的串列埠程式設計(二)----(圖文並茂,講解深刻)http://blog.csdn.net/w28252
Linux串列埠程式設計教程(三)——串列埠程式設計詳(原始碼)解:http://blog.csdn.net/u011192270/article/details/48174353 Linux下的串列埠程式設計(二)----(圖文並茂,講解深刻)http://blog.csdn.ne
Python爬蟲框架Scrapy例項(三)資料儲存到MongoDB
Python爬蟲框架Scrapy例項(三)資料儲存到MongoDB任務目標:爬取豆瓣電影top250,將資料儲存到MongoDB中。 items.py檔案複製程式碼# -*- coding: utf-8 -*-import scrapy class DoubanItem(scrapy.Item): # d
Linux命令列與shell指令碼程式設計大全(三)
十二、呈現資料 輸入和輸出 標準檔案描述符 0 STDIN 標準輸入 &n
JavaScript面向物件程式設計-繼承(三)
寄生組合式繼承(終極繼承者) 前面學習了類式繼承和建構函式繼承組合使用,也就是組合繼承,但是這種繼承方式有個問題,就是子類不是父類的例項,而子類的原型是父類的例項。子類不是父類例項的問題是由類式繼承引起的。因此還有一種更好的繼承方式,那就是寄生組合式繼承,也就是寄生
Python學習初級程式設計例項(一)
題目:有1、2、3、4四個數字,能組成多少個互不相同且無重複數字的三位數?都是多少? 程式分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去 掉不滿足條件的排列。 程式原始碼
Java程式設計思想(三)第15章-泛型
目錄: 泛型(generics)的概念是Java SE5的重大變化之一。泛型實現了引數化型別(parameterized types)的概念,使程式碼可以應用於多種型別。“泛型”這個術語的意思是:“適用於許多許多的型別”。 1 泛型方法 泛型方法與其所在的類
Unity實戰篇:移植遊戲到安卓平臺的注意事項及其例項(三)(UI互動邏輯開發)
為了方便開發,我們把GameController做成一個單例。 using UnityEngine; using UnityEngine.SceneManagement; using System.Collections; using UnityEngine.UI; pu
java程式設計--圖表(三)楊輝三角問題
package com.neuedu.one; //楊輝三角問題 import java.util.Scanner; public class Ch3 { /* 根據輸入行數打印出楊輝三角形,如下: 1 1 1 1 2 1 1 3
從零開始學習Kinect程式設計筆記(三) 4.23
睡到中午11點半才起來 orz 中午又吃太多了,什麼時候才能到155啊!! 昨天寫到環境配置 配置完之後可以開始程式設計了 下面這些是轉載別人的文章程式碼 #include <windows.h> #include <iostream>
python 爬蟲例項(三)
問題描述 爬取部落格園的首頁資料URL【https://home.cnblogs.com/blog/page/1/】,之後寫到自己的Excel裡面 環境: OS:Window10 python:3.7 程式碼 import requests import os
程式設計訓練(三)
關於深度優先演算法(dfs)和廣度優先演算法(bfs)的一點東西。 文章目錄 深度優先遍歷 深度優先,本質應該是圖的遍歷,從某個頂點出發,訪問圖中的每一個頂點,而深度優先就意味著它是優先選擇更深層次的頂點,用樹來看得的話,那就是最快到達某個葉子結點。 一般步驟:
java經典程式程式設計知識(三)
Java中int、String的型別轉換 int->String 加上"" Integer.toString() String->int Integer.parseInt(); String[] str=scanner.nextLine().split(" ");
Shell指令碼程式設計之(三)執行方式差異(source, sh script, ./script)
利用直接方式或bash執行 該 指令碼 都會使用一個新的 bash 環境來執行指令碼內的指令!也就是說,使用這種執行方式時, 其實 script 是在子程式的 bash 內執行的 知識點 當子程式完成後,在子程式內的各項變數或動作將會結束而不會傳回到父程式中
Python 入門程式設計題(三)答案
Python 入門程式設計題:21~30(答案) 提示:最好還是先思考,先編寫,再看答案哦 ^_^ 21. import os.path import shutil def create_filefolder(folder_name): if not os.path.exi
Python 入門程式設計題(三)
Python 入門程式設計題:21~30 本系列部落格都是一些比較簡單的題目,適合新手,因為我就是新手~非常歡迎大家一起討論,讓我們一起進步! 21、現在有一個資料夾Filetest,資料夾中有大量的圖片 圖片的名稱是這樣的12345-1.jpg、23456-1.jpg、1234