MapReduce數據分析(9)數據去重

九、MapReduce第九講數據去重()

實現原理分析:

map函數數將輸入的文本按照行讀取, 並將Key–每一行的內容 輸出 value–空。

reduce 會自動統計所有的key,我們讓reduce輸出key->輸入的key value->空,這樣就利用reduce自動合併相同的key的原理實現了數據去重。

數據介紹:鏈家網公司需要對數據進行,找了一些數據分析師需要對數據進行處理,其中有些有重複數據,我們需要自己進行去重的操作,然後才能把數據安心的給數據分析師進行分析。

數據樣例:

2室1廳,53m²,共5層,207研究所宿舍,小店,學府街,體育西路體育南路351號,86,16120元/m²

代碼如下:

package HouseQC;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
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;

public class QC {
	public static void main(String[] args) throws Exception {
		
		Configuration conf=new Configuration();
		Job job = Job.getInstance(conf);
		job.setJarByClass(QC.class);
		job.setMapperClass(MMapper.class);
		job.setReducerClass(MReduce.class);
		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(NullWritable.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(NullWritable.class);
		FileInputFormat.setInputPaths(job, new Path(args[0]));
		FileOutputFormat.setOutputPath(job, new Path(args[1]));
		job.waitForCompletion(true);
		
	}
	public static class MMapper extends Mapper<LongWritable, Text, Text, NullWritable>{
		
		protected void map(LongWritable key, Text value, Context context)
				throws IOException, InterruptedException {
			context.write(value, NullWritable.get());
		}
	}
	public static class MReduce extends Reducer<Text, NullWritable, Text, NullWritable>{
		@Override
		protected void reduce(Text key, Iterable<NullWritable> value,
				Context context) throws IOException, InterruptedException {
			context.write(key, NullWritable.get());
		}
	}
}

運行結果:

在這裏插入圖片描述

本次教程到此結束!!!
多多支持博主呦,你們的支持就是我更新的動力。

最後附上部分數據:

2室1廳,53m²,共5層,207研究所宿舍,小店,學府街,體育西路體育南路351號,86,16120元/m²
2室2廳,75m²,中層(共6層),龍騰小區,萬柏林,迎澤西大街,迎澤西大街,86,11467元/m²
3室2廳,141m²,中層(共22層),遠大鳳璽灣,萬柏林,晉祠路,長風西街36號,212,14961元/m²
2室2廳,78m²,中層(共6層),晉安三號院,杏花嶺,勝利街,勝利街29號,80,10256元/m²
3室1廳,98m²,高層(共23層),御龍庭(龍城北街),小店,晉陽街,龍城北街165號,130,13150元/m²
2室2廳,88m²,中層(共26層),奧龍灣,杏花嶺,建設北路,建設北路339號,113,12773元/m²
2室2廳,100m²,高層(共11層),大唐四季花園,萬柏林,千峯南路,千峯南路168號,125,12500元/m²
3室2廳,189m²,中層(共27層),恆大華府,小店,體育路,晉陽街86號,350,18517元/m²
2室1廳,60m²,低層(共6層),勝利街玻璃廠宿舍,杏花嶺,上北關,勝利街,56,9333元/m²
1室1廳,39m²,中層(共6層),煤場小區,杏花嶺,建設北路,建設北路186號,42.5,10897元/m²
2室2廳,62m²,高層(共6層),鐵路迎春小區,杏花嶺,賽馬場,迎春街18號,59,9466元/m²
3室2廳,105m²,中層(共6層),晉安三號院,杏花嶺,勝利街,勝利街29號,100,9524元/m²
3室2廳,95m²,低層(共13層),富力城七期啓棲谷,杏花嶺,北中環,北中環街,102,10719元/m²
2室1廳,73m²,高層(共6層),煤氣化大王小區,萬柏林,千峯南路,千峯南路69號,80,10959元/m²
1室1廳,39m²,低層(共32層),富力現代廣場,萬柏林,長風西大街,和平南路221號,59,14914元/m²
2室1廳,64m²,中層(共6層),郵電宿舍,迎澤,青年路,郵電后街,125,19531元/m²
3室2廳,181m²,高層(共30層),香檀一號,小店,濱河東路,星河街1號,320,17641元/m²
2室2廳,80m²,低層(共7層),省建四公司宿舍,迎澤,體育館,體育西路,90,11250元/m²
2室2廳,94m²,高層(共6層),太原陶瓷廠宿舍,杏花嶺,賽馬場,敦化南路27號,95,10106元/m²
3室2廳,123m²,低層(共7層),華宇綠洲,小店,學府街,學府西街130號,175,14127元/m²
3室1廳,73m²,共5層,老軍營南區,迎澤,老軍營,菜園西街10號,100,13699元/m²
2室1廳,50m²,低層(共9層),梅花苑,杏花嶺,北大街,北大街,53,10600元/m²
2室1廳,55m²,共5層,東苑小區,杏花嶺,小東門,小東門街8號,54,9818元/m²
2室2廳,91m²,高層(共33層),太原萬科藍山南區,萬柏林,和平南路,和平南路205號,120,13146元/m²
4室2廳,231m²,高層(共7層),華宇綠洲,小店,學府街,學府西街130號,330,14228元/m²
2室1廳,106m²,低層(共14層),十二院城,萬柏林,和平南路,和平南路139號,138,13019元/m²
2室1廳,98m²,中層(共32層),綠地世紀城,晉源,晉陽湖,新晉祠路300號,138,14082元/m²
2室1廳,67m²,中層(共6層),鐵路迎春小區,杏花嶺,賽馬場,迎春街18號,70,10448元/m²
3室2廳,117m²,高層(共32層),富力華庭,杏花嶺,解放北路,解放北路9號,140,11889元/m²
2室2廳,78m²,中層(共6層),上敦化坊小區,杏花嶺,賽馬場,敦化化工路,81,10385元/m²
2室1廳,60m²,中層(共6層),郵電宿舍,迎澤,青年路,郵電后街,100,16667元/m²
2室2廳,76m²,高層(共28層),寶佳麗景花園,迎澤,五一廣場,幷州北路45號,170,22101元/m²
3室2廳,158m²,中層(共33層),昌盛雙喜城,小店,親賢,親賢北街9號,220
2室1廳,53m²,共5層,207研究所宿舍,小店,學府街,體育西路體育南路351號,86,16120元/m²
2室2廳,75m²,中層(共6層),龍騰小區,萬柏林,迎澤西大街,迎澤西大街,86,11467元/m²
3室2廳,141m²,中層(共22層),遠大鳳璽灣,萬柏林,晉祠路,長風西街36號,212,14961元/m²
2室2廳,78m²,中層(共6層),晉安三號院,杏花嶺,勝利街,勝利街29號,80,10256元/m²
3室1廳,98m²,高層(共23層),御龍庭(龍城北街),小店,晉陽街,龍城北街165號,130,13150元/m²
2室2廳,88m²,中層(共26層),奧龍灣,杏花嶺,建設北路,建設北路339號,113,12773元/m²
2室2廳,100m²,高層(共11層),大唐四季花園,萬柏林,千峯南路,千峯南路168號,125,12500元/m²
3室2廳,189m²,中層(共27層),恆大華府,小店,體育路,晉陽街86號,350,18517元/m²
2室1廳,60m²,低層(共6層),勝利街玻璃廠宿舍,杏花嶺,上北關,勝利街,56,9333元/m²
1室1廳,39m²,中層(共6層),煤場小區,杏花嶺,建設北路,建設北路186號,42.5,10897元/m²
2室2廳,62m²,高層(共6層),鐵路迎春小區,杏花嶺,賽馬場,迎春街18號,59,9466元/m²
3室2廳,105m²,中層(共6層),晉安三號院,杏花嶺,勝利街,勝利街29號,100,9524元/m²
3室2廳,95m²,低層(共13層),富力城七期啓棲谷,杏花嶺,北中環,北中環街,102,10719元/m²
2室1廳,73m²,高層(共6層),煤氣化大王小區,萬柏林,千峯南路,千峯南路69號,80,10959元/m²
1室1廳,39m²,低層(共32層),富力現代廣場,萬柏林,長風西大街,和平南路221號,59,14914元/m²
2室1廳,64m²,中層(共6層),郵電宿舍,迎澤,青年路,郵電后街,125,19531元/m²
3室2廳,181m²,高層(共30層),香檀一號,小店,濱河東路,星河街1號,320,17641元/m²
2室2廳,80m²,低層(共7層),省建四公司宿舍,迎澤,體育館,體育西路,90,11250元/m²
2室2廳,94m²,高層(共6層),太原陶瓷廠宿舍,杏花嶺,賽馬場,敦化南路27號,95,10106元/m²
3室2廳,123m²,低層(共7層),華宇綠洲,小店,學府街,學府西街130號,175,14127元/m²
3室1廳,73m²,共5層,老軍營南區,迎澤,老軍營,菜園西街10號,100,13699元/m²
2室1廳,50m²,低層(共9層),梅花苑,杏花嶺,北大街,北大街,53,10600元/m²
2室1廳,55m²,共5層,東苑小區,杏花嶺,小東門,小東門街8號,54,9818元/m²
2室2廳,91m²,高層(共33層),太原萬科藍山南區,萬柏林,和平南路,和平南路205號,120,13146元/m²
4室2廳,231m²,高層(共7層),華宇綠洲,小店,學府街,學府西街130號,330,14228元/m²
2室1廳,106m²,低層(共14層),十二院城,萬柏林,和平南路,和平南路139號,138,13019元/m²
2室1廳,98m²,中層(共32層),綠地世紀城,晉源,晉陽湖,新晉祠路300號,138,14082元/m²
2室1廳,67m²,中層(共6層),鐵路迎春小區,杏花嶺,賽馬場,迎春街18號,70,10448元/m²
3室2廳,117m²,高層(共32層),富力華庭,杏花嶺,解放北路,解放北路9號,140,11889元/m²
2室2廳,78m²,中層(共6層),上敦化坊小區,杏花嶺,賽馬場,敦化化工路,81,10385元/m²
2室1廳,60m²,中層(共6層),郵電宿舍,迎澤,青年路,郵電后街,100,16667元/m²
2室2廳,76m²,高層(共28層),寶佳麗景花園,迎澤,五一廣場,幷州北路45號,170,22101元/m²
3室2廳,158m²,中層(共33層),昌盛雙喜城,小店,親賢,親賢北街9號,220
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章