From 3a7a9e50e850b290a73f0a1b1b85c286382d73c3 Mon Sep 17 00:00:00 2001 From: clhost Date: Mon, 13 Nov 2017 19:14:24 +0300 Subject: [PATCH 1/8] init --- 2017-big-data.iml | 79 +++++ pom.xml | 4 +- src/main/java/clhost/task1/WordCount.java | 81 +++++ .../clhost/task2/FrequencyWordCounter.java | 89 +++++ .../java/clhost/task3/StopWordCounter.java | 112 ++++++ .../java/clhost/task4/Name05WordCounter.java | 91 +++++ .../java/clhost/task4/NameWordCounter.java | 84 +++++ stop_words_en.txt | 319 ++++++++++++++++++ .../task1/WordCount$WordCountMapper.class | Bin 0 -> 2603 bytes .../task1/WordCount$WordCountReducer.class | Bin 0 -> 2312 bytes target/classes/clhost/task1/WordCount.class | Bin 0 -> 2401 bytes ...FrequencyWordCounter$FrequencyMapper.class | Bin 0 -> 2428 bytes ...requencyWordCounter$FrequencyReducer.class | Bin 0 -> 2685 bytes .../clhost/task2/FrequencyWordCounter.class | Bin 0 -> 2459 bytes .../StopWordCounter$StopWordMapper.class | Bin 0 -> 4138 bytes .../StopWordCounter$StopWordReducer.class | Bin 0 -> 2600 bytes .../clhost/task3/StopWordCounter.class | Bin 0 -> 2405 bytes .../Name05WordCounter$Name05WordMapper.class | Bin 0 -> 2934 bytes .../Name05WordCounter$Name05WordReducer.class | Bin 0 -> 2415 bytes .../clhost/task4/Name05WordCounter.class | Bin 0 -> 2523 bytes .../NameWordCounter$NameWordMapper.class | Bin 0 -> 2725 bytes .../NameWordCounter$NameWordReducer.class | Bin 0 -> 2489 bytes .../clhost/task4/NameWordCounter.class | Bin 0 -> 2436 bytes .../pritykovskaya/WordCount$MyMapper.class | Bin 0 -> 2456 bytes .../pritykovskaya/WordCount$MyReducer.class | Bin 0 -> 2294 bytes target/classes/pritykovskaya/WordCount.class | Bin 0 -> 2325 bytes 26 files changed, 857 insertions(+), 2 deletions(-) create mode 100644 2017-big-data.iml create mode 100644 src/main/java/clhost/task1/WordCount.java create mode 100644 src/main/java/clhost/task2/FrequencyWordCounter.java create mode 100644 src/main/java/clhost/task3/StopWordCounter.java create mode 100644 src/main/java/clhost/task4/Name05WordCounter.java create mode 100644 src/main/java/clhost/task4/NameWordCounter.java create mode 100644 stop_words_en.txt create mode 100644 target/classes/clhost/task1/WordCount$WordCountMapper.class create mode 100644 target/classes/clhost/task1/WordCount$WordCountReducer.class create mode 100644 target/classes/clhost/task1/WordCount.class create mode 100644 target/classes/clhost/task2/FrequencyWordCounter$FrequencyMapper.class create mode 100644 target/classes/clhost/task2/FrequencyWordCounter$FrequencyReducer.class create mode 100644 target/classes/clhost/task2/FrequencyWordCounter.class create mode 100644 target/classes/clhost/task3/StopWordCounter$StopWordMapper.class create mode 100644 target/classes/clhost/task3/StopWordCounter$StopWordReducer.class create mode 100644 target/classes/clhost/task3/StopWordCounter.class create mode 100644 target/classes/clhost/task4/Name05WordCounter$Name05WordMapper.class create mode 100644 target/classes/clhost/task4/Name05WordCounter$Name05WordReducer.class create mode 100644 target/classes/clhost/task4/Name05WordCounter.class create mode 100644 target/classes/clhost/task4/NameWordCounter$NameWordMapper.class create mode 100644 target/classes/clhost/task4/NameWordCounter$NameWordReducer.class create mode 100644 target/classes/clhost/task4/NameWordCounter.class create mode 100644 target/classes/pritykovskaya/WordCount$MyMapper.class create mode 100644 target/classes/pritykovskaya/WordCount$MyReducer.class create mode 100644 target/classes/pritykovskaya/WordCount.class diff --git a/2017-big-data.iml b/2017-big-data.iml new file mode 100644 index 0000000..ce21085 --- /dev/null +++ b/2017-big-data.iml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 16acaa5..8f4567d 100644 --- a/pom.xml +++ b/pom.xml @@ -38,8 +38,8 @@ org.apache.maven.plugins maven-compiler-plugin - 1.6 - 1.6 + 1.8 + 1.8 diff --git a/src/main/java/clhost/task1/WordCount.java b/src/main/java/clhost/task1/WordCount.java new file mode 100644 index 0000000..948e2cd --- /dev/null +++ b/src/main/java/clhost/task1/WordCount.java @@ -0,0 +1,81 @@ +package clhost.task1; + +import java.io.IOException; +import java.util.StringTokenizer; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.LongWritable; +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.input.TextInputFormat; +import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; +import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.util.ToolRunner; + + +public class WordCount extends Configured implements Tool { + + public static class WordCountMapper extends Mapper { + private static final IntWritable ONE = new IntWritable(1); + private final transient Text word = new Text(); + + @Override + public void map(final LongWritable key, final Text value, final Context context) throws IOException, InterruptedException { + System.out.println("#map"); + final String line = value.toString(); + final StringTokenizer tokenizer = new StringTokenizer(line); + + while (tokenizer.hasMoreTokens()) { + word.set(tokenizer.nextToken()); + context.write(word, ONE); + } + } + } + + + public static class WordCountReducer extends Reducer { + + @Override + public void reduce(final Text key, final Iterable values, final Context context) throws IOException, InterruptedException { + int sum = 0; + for (final IntWritable val : values) { + sum += val.get(); + } + context.write(key, new IntWritable(sum)); + } + } + + + @Override + public int run(final String[] args) throws Exception { + final Configuration conf = this.getConf(); + final Job job = Job.getInstance(conf, "Word Count"); + job.setJarByClass(WordCount.class); + + job.setMapperClass(WordCount.WordCountMapper.class); + job.setReducerClass(WordCount.WordCountReducer.class); + + job.setOutputKeyClass(Text.class); + job.setOutputValueClass(IntWritable.class); + + job.setInputFormatClass(TextInputFormat.class); + job.setOutputFormatClass(TextOutputFormat.class); + + FileInputFormat.addInputPath(job, new Path(args[0])); + FileOutputFormat.setOutputPath(job, new Path("/home/clhost/proj/2017-big-data/wordcountoutput")); + + return job.waitForCompletion(true) ? 0 : 1; + } + + public static void main(final String[] args) throws Exception { + final int returnCode = ToolRunner.run(new Configuration(), new WordCount(), args); + System.exit(returnCode); + } +} diff --git a/src/main/java/clhost/task2/FrequencyWordCounter.java b/src/main/java/clhost/task2/FrequencyWordCounter.java new file mode 100644 index 0000000..9bacb1f --- /dev/null +++ b/src/main/java/clhost/task2/FrequencyWordCounter.java @@ -0,0 +1,89 @@ +package clhost.task2; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.LongWritable; +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.TextInputFormat; +import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.util.ToolRunner; + +import java.io.IOException; + +// подаем на вход результат работы джобы WordCount +public class FrequencyWordCounter extends Configured implements Tool { + + public static class FrequencyMapper extends Mapper { + private final Text word = new Text(); + private final IntWritable count = new IntWritable(); + + @Override + protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { + String[] tokens = value.toString().split("\t"); + + word.set(tokens[0]); + count.set((-1) * Integer.parseInt(tokens[1])); + context.write(count, word); + } + } + + + public static class FrequencyReducer extends Reducer { + private final IntWritable count = new IntWritable(); + private int counter = 0; + + @Override + protected void reduce(IntWritable key, Iterable values, Context context) throws IOException, InterruptedException { + System.out.println("#reduce"); + count.set(Integer.parseInt(key.toString()) * (-1)); + for (Text value : values) { + context.write(value, count); + } + counter++; + + + /*if (counter == 7) { + for (Text value : values) { + context.write(value, count); + } + } + counter++;*/ + } + } + + + @Override + public int run(final String[] args) throws Exception { + Job job = new Job(getConf(), "Frequency Word Count"); + job.setJarByClass(getClass()); + + TextInputFormat.addInputPath(job, + new Path("/home/clhost/proj/2017-big-data/wordcountoutput/part-r-00000")); + job.setInputFormatClass(TextInputFormat.class); + + job.setMapperClass(FrequencyMapper.class); + job.setReducerClass(FrequencyReducer.class); + + job.setMapOutputKeyClass(IntWritable.class); + job.setMapOutputValueClass(Text.class); + + TextOutputFormat.setOutputPath(job, + new Path("/home/clhost/proj/2017-big-data/frequencycountoutput")); + job.setOutputFormatClass(TextOutputFormat.class); + job.setOutputKeyClass(Text.class); + job.setOutputValueClass(IntWritable.class); + + return job.waitForCompletion(true) ? 0 : 1; + } + + public static void main(final String[] args) throws Exception { + final int returnCode = ToolRunner.run(new Configuration(), new FrequencyWordCounter(), args); + System.exit(returnCode); + } +} diff --git a/src/main/java/clhost/task3/StopWordCounter.java b/src/main/java/clhost/task3/StopWordCounter.java new file mode 100644 index 0000000..4c65647 --- /dev/null +++ b/src/main/java/clhost/task3/StopWordCounter.java @@ -0,0 +1,112 @@ +package clhost.task3; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.DoubleWritable; +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.LongWritable; +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.input.TextInputFormat; +import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; +import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.util.ToolRunner; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.HashSet; +import java.util.Set; +import java.util.StringTokenizer; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class StopWordCounter extends Configured implements Tool { + + public static class StopWordMapper extends Mapper { + private HashSet set = initSet(); + + @Override + public void map(final LongWritable key, final Text value, final Context context) throws IOException, InterruptedException { + System.out.println("#map"); + final String line = value.toString(); + final StringTokenizer tokenizer = new StringTokenizer(line); + + int count_valid = 0; + int count_all = 0; + while (tokenizer.hasMoreTokens()) { + String word = tokenizer.nextToken(); + + if (set.contains(word.trim())) { + count_valid++; + } + count_all++; + } + context.write(new IntWritable(count_valid), new IntWritable(count_all)); + } + + private HashSet initSet() { + String path = "/home/clhost/proj/2017-big-data/stop_words_en.txt"; + Set set = new HashSet<>(); + + try (Stream stream = Files.lines(Paths.get(path))) { + set = stream + .collect(Collectors.toSet()); + } catch (IOException e) { + e.printStackTrace(); + } + return (HashSet) set; + } + } + + + public static class StopWordReducer extends Reducer { + + @Override + protected void reduce(IntWritable key, Iterable values, Context context) throws IOException, InterruptedException { + System.out.println("#reduce"); + // приходит 2 значения + int count_valid = key.get(); + int count_all = 0; + + for (IntWritable ci : values) { + count_all = ci.get(); // вернет одно значение + } + + // return (1, %) + context.write(new IntWritable(1), new DoubleWritable(((double) count_valid) / count_all)); + } + } + + + @Override + public int run(final String[] args) throws Exception { + final Configuration conf = this.getConf(); + final Job job = Job.getInstance(conf, "Stop Word Count"); + job.setJarByClass(StopWordCounter.class); + + job.setMapperClass(StopWordCounter.StopWordMapper.class); + job.setReducerClass(StopWordCounter.StopWordReducer.class); + + job.setOutputKeyClass(IntWritable.class); + job.setOutputValueClass(IntWritable.class); + + job.setInputFormatClass(TextInputFormat.class); + job.setOutputFormatClass(TextOutputFormat.class); + + FileInputFormat.addInputPath(job, new Path(args[0])); + FileOutputFormat.setOutputPath(job, new Path("/home/clhost/proj/2017-big-data/stopwordcountoutput")); + + return job.waitForCompletion(true) ? 0 : 1; + } + + public static void main(final String[] args) throws Exception { + final int returnCode = ToolRunner.run(new Configuration(), new StopWordCounter(), args); + System.exit(returnCode); + } +} diff --git a/src/main/java/clhost/task4/Name05WordCounter.java b/src/main/java/clhost/task4/Name05WordCounter.java new file mode 100644 index 0000000..91002cf --- /dev/null +++ b/src/main/java/clhost/task4/Name05WordCounter.java @@ -0,0 +1,91 @@ +package clhost.task4; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.DoubleWritable; +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.LongWritable; +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.input.TextInputFormat; +import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; +import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.util.ToolRunner; + +import java.io.IOException; +import java.util.StringTokenizer; + +public class Name05WordCounter extends Configured implements Tool { + + public static class Name05WordMapper extends Mapper { + private final transient IntWritable count = new IntWritable(); + private final transient Text word = new Text(); + + @Override // на вход файл из Word Count + public void map(final LongWritable key, final Text value, final Context context) throws IOException, InterruptedException { + System.out.println("#map"); + final String line = value.toString(); + final StringTokenizer tokenizer = new StringTokenizer(line); + int count_all = 0; + + while (tokenizer.hasMoreTokens()) { + count_all++; // количество записей + } + + while (tokenizer.hasMoreTokens()) { + String token = tokenizer.nextToken(); + word.set(token.split(" ")[0]); + count.set(Integer.parseInt(token.split(" ")[1]) * (-1)); + + if (((double) count.get()) / count_all <= 0.5) { + context.write(word, new IntWritable(count.get())); + } + + } + } + } + + + public static class Name05WordReducer extends Reducer { + + @Override // ничего не делает + public void reduce(final Text key, final Iterable values, final Context context) throws IOException, InterruptedException { + System.out.println("#reduce"); + for (final IntWritable val : values) { + context.write(key, val); + } + } + } + + + @Override + public int run(final String[] args) throws Exception { + final Configuration conf = this.getConf(); + final Job job = Job.getInstance(conf, "Name05 Word Count"); + job.setJarByClass(Name05WordCounter.class); + + job.setMapperClass(Name05WordCounter.Name05WordMapper.class); + job.setReducerClass(Name05WordCounter.Name05WordReducer.class); + + job.setOutputKeyClass(Text.class); + job.setOutputValueClass(IntWritable.class); + + job.setInputFormatClass(TextInputFormat.class); + job.setOutputFormatClass(TextOutputFormat.class); + + FileInputFormat.addInputPath(job, new Path("/home/clhost/proj/2017-big-data/wordcountoutput/part-r-00000")); + FileOutputFormat.setOutputPath(job, new Path("/home/clhost/proj/2017-big-data/name05wordcountoutput")); + + return job.waitForCompletion(true) ? 0 : 1; + } + + public static void main(final String[] args) throws Exception { + final int returnCode = ToolRunner.run(new Configuration(), new Name05WordCounter(), args); + System.exit(returnCode); + } +} diff --git a/src/main/java/clhost/task4/NameWordCounter.java b/src/main/java/clhost/task4/NameWordCounter.java new file mode 100644 index 0000000..7a2b634 --- /dev/null +++ b/src/main/java/clhost/task4/NameWordCounter.java @@ -0,0 +1,84 @@ +package clhost.task4; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.LongWritable; +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.input.TextInputFormat; +import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; +import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.util.ToolRunner; + +import java.io.IOException; +import java.util.StringTokenizer; + +public class NameWordCounter extends Configured implements Tool { + + public static class NameWordMapper extends Mapper { + private static final IntWritable ONE = new IntWritable(1); + private final transient Text word = new Text(); + + @Override + public void map(final LongWritable key, final Text value, final Context context) throws IOException, InterruptedException { + System.out.println("#map"); + final String line = value.toString(); + final StringTokenizer tokenizer = new StringTokenizer(line); + + while (tokenizer.hasMoreTokens()) { + String w = tokenizer.nextToken(); + if (w.matches("[A-Z].+")) { + word.set(w); + context.write(word, ONE); + } + } + } + } + + + public static class NameWordReducer extends Reducer { + + @Override + public void reduce(final Text key, final Iterable values, final Context context) throws IOException, InterruptedException { + System.out.println("#reduce"); + int sum = 0; + for (final IntWritable val : values) { + sum += val.get(); + } + context.write(key, new IntWritable(sum)); + } + } + + + @Override + public int run(final String[] args) throws Exception { + final Configuration conf = this.getConf(); + final Job job = Job.getInstance(conf, "Name Word Count"); + job.setJarByClass(NameWordCounter.class); + + job.setMapperClass(NameWordCounter.NameWordMapper.class); + job.setReducerClass(NameWordCounter.NameWordReducer.class); + + job.setOutputKeyClass(Text.class); + job.setOutputValueClass(IntWritable.class); + + job.setInputFormatClass(TextInputFormat.class); + job.setOutputFormatClass(TextOutputFormat.class); + + FileInputFormat.addInputPath(job, new Path(args[0])); + FileOutputFormat.setOutputPath(job, new Path("/home/clhost/proj/2017-big-data/namewordcountoutput")); + + return job.waitForCompletion(true) ? 0 : 1; + } + + public static void main(final String[] args) throws Exception { + final int returnCode = ToolRunner.run(new Configuration(), new NameWordCounter(), args); + System.exit(returnCode); + } +} diff --git a/stop_words_en.txt b/stop_words_en.txt new file mode 100644 index 0000000..b7454b0 --- /dev/null +++ b/stop_words_en.txt @@ -0,0 +1,319 @@ +a +about +above +across +after +afterwards +again +against +all +almost +alone +along +already +also +although +always +am +among +amongst +amoungst +amount +an +and +another +any +anyhow +anyone +anything +anyway +anywhere +are +around +as +at +back +be +became +because +become +becomes +becoming +been +before +beforehand +behind +being +below +beside +besides +between +beyond +bill +both +bottom +but +by +call +can +cannot +cant +co +computer +con +could +couldnt +cry +de +describe +detail +do +done +down +due +during +each +eg +eight +either +eleven +else +elsewhere +empty +enough +etc +even +ever +every +everyone +everything +everywhere +except +few +fifteen +fify +fill +find +fire +first +five +for +former +formerly +forty +found +four +from +front +full +further +get +give +go +had +has +hasnt +have +he +hence +her +here +hereafter +hereby +herein +hereupon +hers +herse" +him +himse" +his +how +however +hundred +i +ie +if +in +inc +indeed +interest +into +is +it +its +itse" +keep +last +latter +latterly +least +less +ltd +made +many +may +me +meanwhile +might +mill +mine +more +moreover +most +mostly +move +much +must +my +myse" +name +namely +neither +never +nevertheless +next +nine +no +nobody +none +noone +nor +not +nothing +now +nowhere +of +off +often +on +once +one +only +onto +or +other +others +otherwise +our +ours +ourselves +out +over +own +part +per +perhaps +please +put +rather +re +same +see +seem +seemed +seeming +seems +serious +several +she +should +show +side +since +sincere +six +sixty +so +some +somehow +someone +something +sometime +sometimes +somewhere +still +such +system +take +ten +than +that +the +their +them +themselves +then +thence +there +thereafter +thereby +therefore +therein +thereupon +these +they +thick +thin +third +this +those +though +three +through +throughout +thru +thus +to +together +too +top +toward +towards +twelve +twenty +two +un +under +until +up +upon +us +very +via +was +we +well +were +what +whatever +when +whence +whenever +where +whereafter +whereas +whereby +wherein +whereupon +wherever +whether +which +while +whither +who +whoever +whole +whom +whose +why +will +with +within +without +would +yet +you +your +yours +yourself +yourselves diff --git a/target/classes/clhost/task1/WordCount$WordCountMapper.class b/target/classes/clhost/task1/WordCount$WordCountMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..f6c7f2b8c3f5267efbf32b0209747cc4abf078ac GIT binary patch literal 2603 zcmd5;TUQ%Z6#h<_FeDBsQb1Geg+ggafmp3tAyO++MFUiWMe22!9Fu`ClQo&N#h>Au zk3PA4v}#yO)^hdPXa9h&{s%ALnOr)BLHpv;Jj^*~pKo8zclO>VKmYOLPXMl9JBeXj z)A4E&F8&ek0)qwDGOM>t&sOWUQ1dHxo#+iZ zT67zZzhc&E(i1S29Y=bLRkL1~1Y`iTmx}PmccwKPoeenNXUnZEZ`-pO26n?G48!pt9PRx0r-M z6Zk6Po)7E(r*tsalSQ}TS@MRh+ES|9L1t9}890Sef%H)Z+9_$^X{2@BHt+#HWc7{n zbUHpV@G(9y@F`3x2bCCAXv#WKTd)k2Kxa}dNAQ$^&rlW^i*y_A7zV~MDR3?l7^(~9 zsiMOcn0&m>$tU5c&BHe*ko{*+rxgke9BxShCj$|=Twd#zrNEhoK%PN*UZdvAQV0;X zv{(1#E}N{|U~3<4WiJihWY6>2`J}naJMQ`kiP>ap3RHEd7cPW$zYJ2@cUvogq0CgM zG`c;tzhc%`Tu%nwlTQ<$z1!?44quu;L`hvTviMy-q)f1jVNb`Fobs(@menv4ePI~m zYd*|B2r*tQQ--rIR4#JVAXM7&`wUkL=-~_)$nHaA4-nhjN6!z?zNIXN)BLJ`3ZSM& zoim&nEj-TRJXd_VFi9KA)-N1;Ip*&pKG@rYKHWs$oOXc3W?I`vaxR{ZH}S-mIGz0- znwlF;^v|fpeWaQ=@%5j-D!*Fb_Y8E-&!P|Kkm7mL^fbo*Dl@o%d0Y%)S!nrd$3oAP zXM*_hn4*S?JdZ3cF|rh9F->hPur!Mt;&_((t@9|r1${1dtq?eXn z#7nr!c?>TPTxTqEoT*b^rA3WnDtqYx2Bse%Hq*qD5Bcj2;z@_NOSR(-TkhkTI(IU` xIMmNLz~Cl{JNX?_%AN>#Y1unPOe>l^Ug2JhH#x>}kh38a$ytJ24da3){sMu@$-V#p literal 0 HcmV?d00001 diff --git a/target/classes/clhost/task1/WordCount$WordCountReducer.class b/target/classes/clhost/task1/WordCount$WordCountReducer.class new file mode 100644 index 0000000000000000000000000000000000000000..6f8a16423835133319c2c0ab58571b00189d6c6b GIT binary patch literal 2312 zcmd5;U2hvj6g?BKy^Xz1Lz)=emh>wnPMl;(X+wzab>LTS+cb$eMimXMJ;GL9f8q%p5Lf?p&Q(>8=+j_VH8wQGBvYkNk*4$8`a{>bZgaC=mF%Soi#GQ?{kmw9Te$ zcwXCdJo7Gh%k>BHp)_04-8O51?JEz<3GiLn?sA*4wW*lCtU^yclr4b^3Fm00<_7nC zCy1B{-LW4FoKA*D9x)8kg(~*(B<~oS)eCJtf#+~nX}uHf3W%COet%LPw|j}XmSA%w z!OTA*tMK}NOn@Em<`AxKG7|GNc!3EP`k8#?;mSfUX#&SL0%`5slI^G-b$l$4z46Gh z+kxY`9UWC2p9lB?F(KX5e#tA#mWXIIQMXS< zi%J&O`yZ0P@F@jSptN9w z?Fr6I_JVzS_6fvK91LNUZ6;bQ;SG+BE&yYg;EX0vAc;EsJ0D)1{c37Sn|q2Of#q}| z{S+yI?{G$qG=XPGFJ~sSLS_${Zj%`UUCx6WSB#dpM?yYLU@XG^;#H;a&Q> zh!QSiflvMl{{SdQD%?MhEKcEcgj|hXq60XCw<9-KF^RJbLam)6I>p~IF5n_m|6NU$MF#6N3Zkz0!J$Nt7O#J=VnXKFg!QE mhwRJlFBdyINSlg@O$MwCEMlDf7)LnsH%F5dP!~0!7>e;ZoX^v^23v6a|`wwopiLATcqQUfm zpP+yGr+*BmoYM#BgY+%h(^*Lv=U6%LN3%Qo&CblXGrRixzd!#1@Cd(1xP@;dBr)HK z1qn~^RKy~e84=I8ToSR&<#Q1)xXg-J;qs-39G9yi*0@|3u_0jquOw_D--#^=-(s7u z?1=bI!f4=zeC=XS!alwi@q>sT1@!IMPBCM9mb+;bJ>75w$XUxWoJ@t)>qcEbZxgY~ zYBdh%m@_TYofi;KrMCqnGIr4*T+XzNHLqGQoGn(UkVeVbI;(6m$K>-+nQ+S{?K+av zD`mUxYA&lEPH9aav$U(@SptSq`?&-5mT47cm9)I;m{w^voh5h7DbWT45zDlw+twQa zcXGB<(pZh@WkV~oqHWhSzM^I5W0pLJxu$J#Uk7$U!0iZlmDL=d5pBgT5VAY(GX0P! z@be&6MZ6XuEgkDdjc-;L@e}#4GV{H`6IYUBxSnGLj0u#Dl(#)cH;CY;rB3;na*;FiUEYxlB8v)6sbs z1rA00EW<%fMjftziS{ttt5Jj}V-jyg9LYGw36b6T71!^%!)-{!K+iiLKM62k`%#WSlm7}*KHjhNo(r_ z+y|NZ3BAX0l62qF_cNMlBn6Vm$x{e_&>)68^zHDK z!?;UhIRGGqG|dF+-Ft-M#{bZ^36ifT8;GsmSK?<#tf@+}feuv>8|YM(t_CDkxzT{E zD%}nAs7h}GeX7#mfTEsbVE0~p`V@m_xarT7A%8NgCK?#|6=M81Boe=qi?|=wGz9~E zO>SptGzSIq7{LPN_LMSOq|lz>A(rqM&uR1mudw2$Fd2jyra%GXK2%C2i9I|Z4q~)h zo-C)x&op`HM(khyl_b8R#9DpDC`o=Eb98*5RAb~liE;XhBtJpd E|M;wqA^-pY literal 0 HcmV?d00001 diff --git a/target/classes/clhost/task2/FrequencyWordCounter$FrequencyMapper.class b/target/classes/clhost/task2/FrequencyWordCounter$FrequencyMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..cccb27f70cab859a3fc313939d278ea292d90d32 GIT binary patch literal 2428 zcmd5-T~ixX7=BK&Vac-ckx~??ZE4Yl6j%$j)`Iwv7DYo*gJAV)*_=tXgxz(sY2oL1 z<#_3gO&y)-^xB`|k8pfWzF1(fdg18J?s?C7-uHRG&U=3QQu;O}dv?`F!&u){T z=vSn`NXhl&{pS9z47U_eAXoAoyS{CQu9CZ(T2ylzM6ZSN+otrK!wowKWGG;+d!7u7 zb-U4!1T2-Ddd+V{R%AE!7Og&fhtU+3vof6NZ+2|Zwe-Fn=vWufi#{O-3~4`~98<~n zs{NpnA?@TO9FZiHm8K)D4)IKvY+0ovy(bR^t|q84-N#6o_D6QT$xP`^&)c~Ky))@p zipbxS9@BO1o6GWY|7i}`%0}65hK^iw)nu9M-~8A(SWp+h#LIYvfYTZ14m%U)FfMR8 z5fJN66X!8uqJ#|rk=1eE#3nv7@j1TGQ8uxKFO{%uVh3LdOefllUw0FiaaG3yfgAsL zvT-nzy(wKf>#rX1$@!( zZS$nsf!wB+#{J>K_2(Fwdydq63!_JA8EA7(#L_X`^(k&S-L<_$zZJ(@j7U`_#Y(N= MHDno84p%hsCkJb({{R30 literal 0 HcmV?d00001 diff --git a/target/classes/clhost/task2/FrequencyWordCounter$FrequencyReducer.class b/target/classes/clhost/task2/FrequencyWordCounter$FrequencyReducer.class new file mode 100644 index 0000000000000000000000000000000000000000..1d13ed1929f040bcc610454841c425912f44e4c1 GIT binary patch literal 2685 zcmd5;TXz#x6#h;!$>cK7lG17gvCu-(^fFKjN>d{mC`Qv1No_6Om`)DKw8>1I%pmhxcQ+mcR%2Q0(OsxQ-iQw4B6Ee3V21AB*M_8N~$7VI@I+B^kG5 ze992fE!T7y&J``Ys%lM5uW_}eRV=Hi8kSlxoekS?w5>YNGRU4Ww;5Q0A-ZIkhLd9m zr>E8#q`Xz(3jG;Y(vcbMaiidEr!8mn}6$aQ{TPKE3Ph} zm4azyt(|$bXTM?DmAv52?TOx^4?qZ^xOenEUJb3;38DHyC;TW`k&MWFt?tswMV|f;HOHlYq#~ z30Y9^Iz}1Bj?zj6Co!yG1h2_hSFnN4=^BrBC23Q^9eknSOME5cYX#rnt^y5PGIRwM zaH>}Y_fS<(gF$rqMiV8bU>iFM&SFAFonijPm6BonAo_tCWtjdSR$T!k#rGuCb&PsP zLLG~AeaKrBZ^~-#Dl(i2sIAa)+ig0$5-=FtGbr!29Nr+=v|Q5i;ZAW9;4RxQow8$d ztwEo%7bmbx*>4J?x=DV)Iwvo~ta_3ibF9vcgg8AFsC?gs;lv&l5*}U^uT`w6*)2}f zLxAa>47WJ#O6h{QWu4UQdtC^`5D$%)rIBvvec7X9$u+H2@*XjIZtoDD=}q=i^{*|x zKi|=-O{F{;JnX?s?XL)8XOAo%s(@Y@Sb$qh1oFO;!T*FY2SzmwrJs zCASgFJcKmeM*KGaklugw_+p`2vlIi_cSxCW*D+UP2mE zlp-<85MG$@KuXYANfUB+Z;tj<+Djtz55{C%{G0yHF401iOy==6{q>1lUmmsrRw)m0qA`SV GiTwv4%J1s{ literal 0 HcmV?d00001 diff --git a/target/classes/clhost/task2/FrequencyWordCounter.class b/target/classes/clhost/task2/FrequencyWordCounter.class new file mode 100644 index 0000000000000000000000000000000000000000..651e8ff4fb2da1c00906e8a502a7d5a9081b52ac GIT binary patch literal 2459 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 EUxR^R82|tP literal 0 HcmV?d00001 diff --git a/target/classes/clhost/task3/StopWordCounter$StopWordReducer.class b/target/classes/clhost/task3/StopWordCounter$StopWordReducer.class new file mode 100644 index 0000000000000000000000000000000000000000..7d7641634654902ab441f7c43e95bec344abe9a0 GIT binary patch literal 2600 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 SK2WO>${xokJ!O)gqU%4d9Gh1F literal 0 HcmV?d00001 diff --git a/target/classes/pritykovskaya/WordCount$MyMapper.class b/target/classes/pritykovskaya/WordCount$MyMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..bb2ae2d39c676db3ad51288a74d0a68b11838d73 GIT binary patch literal 2456 zcmd5;%W@k<6g@4CG?FrY$Vr^oCczIuWW~0Cn3rt?K{z0gZ9vAxJQibVN}fobQH@4U z#AmQ$$%<6MID1P@u(h_wCc?-adW%wto5J$DaT!uP(*boSB zZLSN<7Hy}R)f;;Gz{nox729rPO*>n#++D|X_5HfBDxlo6or=IzFm~Ix?-CSUGcD82 zkvKiS!!>!kVhD^BP0QG99qt>>wqz3+E81nfzN0&)9QTZhdtf#NVjJxZz0oin0j*$J zhLf-B&8ESb*@Fk9+bzpY^_MV&@S)yNu_>VDZOdg?0*C3~po_Lu zJ>6k2#M@WE6rDImrBybv-B?pSXRC7C;hNDFm_0O?wExQ|xJ7JV#G* z#KXlLIV9K5Y@=+K7dnWnC?|;SO(@4uS0WRU4q{*6TIPEwvLEjtu_y=M;z9@7SAYI0 z{VATmNsnWiU%7`_GSA^Dq;LyQd;W7>A3gu_zekGmau3TyjC;{8;|9`RG)tIAhRjK_ z+{6MRSR}H$2Z>rDD(hK7zay#Q85PgY;5k~NWV%Jp=h+Y8h0)vG>5J^ioxVgyh3#V|;`KAf$kRWE6yuOT?F1ux6m9f7T#$Ui)1=EcMNBuE am$AaR5LR)W?HGGWyn}0qQ?oJ5D&j9b9-uw| literal 0 HcmV?d00001 diff --git a/target/classes/pritykovskaya/WordCount$MyReducer.class b/target/classes/pritykovskaya/WordCount$MyReducer.class new file mode 100644 index 0000000000000000000000000000000000000000..5a41c1c0d62c818e084dd4caaee11f1b95e6b453 GIT binary patch literal 2294 zcmd5;U2hXt5Ir|udx^aS2uY}crUU{wpIayd8Ygb43$3Y>06{_ROM7Flk|oZrwcZW* zr}VK;6_30G(MlE1{R_PGcT_5H?s{!G&6M2Tw22*A6F3{AM>8eIe?Z?u zWQuNCO@UMKqM=6&gK&Y0dMM62hE{2ZHWP!>+f`a`1lt0lBrvi!56yZz7uREKF2tDm zS7Ze~|C1Q8ectrIY9%8!Pu&j~W1*AD1CVYf09_64ddPK>Ft6idFY* z*JiC)!xoU4X(hodV?(6p~qaJ~FM^kvGQtJWqVP8y@`C6{4HdfXjT9yCk`}rj% zt^cdSVR5Hd-N36@w`|2?10DXERs3P#Fa~toG;j;wu$Bybi;{uc_)g%=L1k&6j3tGz zY+wa<1hTOjD%}P~kkxTlVC+CTBxml&+4radQ|}b_O&5@=!Vp$}trlPU0BXMoR#L80Lb(Xix|Zx3__iqp>%@3d7Q;L+8F2QNOU)f z^Bt)Rl)1<|1AYG>BXs2crp5$MQk0pbAJbg-Vdm%!>d$heg1<^cjdNyl>IM3zXLgZ( k+xulAXS-n&5wOXCm4Qnb;ylPzhQS_3KmWlP_(&6P00n=2%>V!Z literal 0 HcmV?d00001 diff --git a/target/classes/pritykovskaya/WordCount.class b/target/classes/pritykovskaya/WordCount.class new file mode 100644 index 0000000000000000000000000000000000000000..bcd849532f948200622f877cec35143b5c2e8ecf GIT binary patch literal 2325 zcma)8+g95~6y4(s1B!qk2$#|{(9+Zb5QIP8IIW`oG z2RSIwCVo(`g>8-E2PnKc2QI|gk#EmOBr+bO$s-Wt2w6IIJA%IhoT|$ zP1`ADY|nDj6xQ)9hS9`M?m!#~y&|l#zV14vRZb_flutNiiZC2K?lUL={Dp7^W^co;iP)Dhz2ieYstW4l4Gf;Y2s8rmYu@V^>Al z&lqZuwcJg5+mZz;_NCny-F6pvSIk}Av}&H~N6yOClI>IlB{8M*gLgUGo_p@S>MzgT z4=!n9udcro?!LtPkfWla3X8*5QG=!87ZB-Zx|4PjileR~375lDafCMn?K|8I>Swas z#&gYzUa;*7!>#Vq3#f>iGzk}D(qZo^+fV(uomZj8o5UQmeY1;-wX{m2?7Ic0AQAJlIuN>))Ty&#~Qps0Ht}#3cL-%cv zLQrf`)raP)gCHyE9E1S-Koit5^hTI+$TD`dRx#vtMps#4JGmXo;5IwgJo$}a*a~YU zgkT~4v}2`1?sIwFU%z1YdZX?dRjSN5HeFd@Ho1Xm`dr=w!w2*Ujgq7*lb$oQ(@8Rt z@!1owKWGub$Mo#+mE*WgYc(*yCrHqa(d^EWm301x!p2Cxo^2wMzpF)05nD-V@g{mw z8gHUErS&zTq_k^Is41<#iGh?h*u?deHq?ZcI>YeRo#@;NMow`f*u{d~Xe!pk*stKx z-w=!aPC24}U2{|o@HOTAhE{24cu1e>1!`=ODtb(nWpE!)@gbsh2o*kitFcM@50axKDXLr40Ru{EJr{a~z*7GWzWR1t3e;<0kQ=0^s}*oF|7I}jRwAcA)u2uzM{rDb4930`9ji| RBB{};kF0LdlariA-~V{SbRYl# literal 0 HcmV?d00001 From 9318a6a7edc21c8fc5f43784e750e045331a8bdd Mon Sep 17 00:00:00 2001 From: clhost Date: Sun, 19 Nov 2017 17:01:34 +0300 Subject: [PATCH 2/8] Fix frequency task --- src/main/java/clhost/task2/FrequencyWordCounter.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/java/clhost/task2/FrequencyWordCounter.java b/src/main/java/clhost/task2/FrequencyWordCounter.java index 9bacb1f..fad6632 100644 --- a/src/main/java/clhost/task2/FrequencyWordCounter.java +++ b/src/main/java/clhost/task2/FrequencyWordCounter.java @@ -36,24 +36,20 @@ protected void map(LongWritable key, Text value, Context context) throws IOExcep public static class FrequencyReducer extends Reducer { private final IntWritable count = new IntWritable(); + private static final int SEEK_POSITION = 7; private int counter = 0; @Override protected void reduce(IntWritable key, Iterable values, Context context) throws IOException, InterruptedException { System.out.println("#reduce"); count.set(Integer.parseInt(key.toString()) * (-1)); - for (Text value : values) { - context.write(value, count); - } - counter++; - - /*if (counter == 7) { - for (Text value : values) { + for (Text value : values) { + if (counter == SEEK_POSITION - 1) { context.write(value, count); } + counter++; } - counter++;*/ } } From dce2f86d5889decf9e04151ba0ed1542b5d1da10 Mon Sep 17 00:00:00 2001 From: clhost Date: Sun, 19 Nov 2017 17:33:31 +0300 Subject: [PATCH 3/8] Fix name task --- .../java/clhost/task4/Name05WordCounter.java | 91 ------------------- .../java/clhost/task4/NameWordCounter.java | 34 +++---- 2 files changed, 17 insertions(+), 108 deletions(-) delete mode 100644 src/main/java/clhost/task4/Name05WordCounter.java diff --git a/src/main/java/clhost/task4/Name05WordCounter.java b/src/main/java/clhost/task4/Name05WordCounter.java deleted file mode 100644 index 91002cf..0000000 --- a/src/main/java/clhost/task4/Name05WordCounter.java +++ /dev/null @@ -1,91 +0,0 @@ -package clhost.task4; - -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.conf.Configured; -import org.apache.hadoop.fs.Path; -import org.apache.hadoop.io.DoubleWritable; -import org.apache.hadoop.io.IntWritable; -import org.apache.hadoop.io.LongWritable; -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.input.TextInputFormat; -import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; -import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; -import org.apache.hadoop.util.Tool; -import org.apache.hadoop.util.ToolRunner; - -import java.io.IOException; -import java.util.StringTokenizer; - -public class Name05WordCounter extends Configured implements Tool { - - public static class Name05WordMapper extends Mapper { - private final transient IntWritable count = new IntWritable(); - private final transient Text word = new Text(); - - @Override // на вход файл из Word Count - public void map(final LongWritable key, final Text value, final Context context) throws IOException, InterruptedException { - System.out.println("#map"); - final String line = value.toString(); - final StringTokenizer tokenizer = new StringTokenizer(line); - int count_all = 0; - - while (tokenizer.hasMoreTokens()) { - count_all++; // количество записей - } - - while (tokenizer.hasMoreTokens()) { - String token = tokenizer.nextToken(); - word.set(token.split(" ")[0]); - count.set(Integer.parseInt(token.split(" ")[1]) * (-1)); - - if (((double) count.get()) / count_all <= 0.5) { - context.write(word, new IntWritable(count.get())); - } - - } - } - } - - - public static class Name05WordReducer extends Reducer { - - @Override // ничего не делает - public void reduce(final Text key, final Iterable values, final Context context) throws IOException, InterruptedException { - System.out.println("#reduce"); - for (final IntWritable val : values) { - context.write(key, val); - } - } - } - - - @Override - public int run(final String[] args) throws Exception { - final Configuration conf = this.getConf(); - final Job job = Job.getInstance(conf, "Name05 Word Count"); - job.setJarByClass(Name05WordCounter.class); - - job.setMapperClass(Name05WordCounter.Name05WordMapper.class); - job.setReducerClass(Name05WordCounter.Name05WordReducer.class); - - job.setOutputKeyClass(Text.class); - job.setOutputValueClass(IntWritable.class); - - job.setInputFormatClass(TextInputFormat.class); - job.setOutputFormatClass(TextOutputFormat.class); - - FileInputFormat.addInputPath(job, new Path("/home/clhost/proj/2017-big-data/wordcountoutput/part-r-00000")); - FileOutputFormat.setOutputPath(job, new Path("/home/clhost/proj/2017-big-data/name05wordcountoutput")); - - return job.waitForCompletion(true) ? 0 : 1; - } - - public static void main(final String[] args) throws Exception { - final int returnCode = ToolRunner.run(new Configuration(), new Name05WordCounter(), args); - System.exit(returnCode); - } -} diff --git a/src/main/java/clhost/task4/NameWordCounter.java b/src/main/java/clhost/task4/NameWordCounter.java index 7a2b634..25c3d19 100644 --- a/src/main/java/clhost/task4/NameWordCounter.java +++ b/src/main/java/clhost/task4/NameWordCounter.java @@ -9,33 +9,33 @@ 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.input.TextInputFormat; -import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.ToolRunner; import java.io.IOException; import java.util.StringTokenizer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class NameWordCounter extends Configured implements Tool { public static class NameWordMapper extends Mapper { - private static final IntWritable ONE = new IntWritable(1); - private final transient Text word = new Text(); + private final static IntWritable ONE = new IntWritable(1); + private final Text word = new Text(); @Override - public void map(final LongWritable key, final Text value, final Context context) throws IOException, InterruptedException { - System.out.println("#map"); - final String line = value.toString(); - final StringTokenizer tokenizer = new StringTokenizer(line); + protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { + StringTokenizer tokenizer = new StringTokenizer(value.toString()); while (tokenizer.hasMoreTokens()) { - String w = tokenizer.nextToken(); - if (w.matches("[A-Z].+")) { - word.set(w); + String token = tokenizer.nextToken(); + if (token.matches("[A-Z].+")) { + word.set(token); context.write(word, ONE); + } else { + context.getCounter("count", token.toLowerCase()).increment(1); } } } @@ -43,14 +43,14 @@ public void map(final LongWritable key, final Text value, final Context context) public static class NameWordReducer extends Reducer { - @Override public void reduce(final Text key, final Iterable values, final Context context) throws IOException, InterruptedException { - System.out.println("#reduce"); int sum = 0; - for (final IntWritable val : values) { - sum += val.get(); + for (IntWritable value : values) { + sum += value.get(); } + + sum += Math.round(context.getCounter("count", key.toString().toLowerCase()).getValue() / (sum * 0.005)); context.write(key, new IntWritable(sum)); } } @@ -71,8 +71,8 @@ public int run(final String[] args) throws Exception { job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); - FileInputFormat.addInputPath(job, new Path(args[0])); - FileOutputFormat.setOutputPath(job, new Path("/home/clhost/proj/2017-big-data/namewordcountoutput")); + TextInputFormat.addInputPath(job, new Path(args[0])); + TextOutputFormat.setOutputPath(job, new Path("/home/clhost/proj/2017-big-data/namewordcountoutput")); return job.waitForCompletion(true) ? 0 : 1; } From cbd90224343104d38dce0cc4a054eec14c850614 Mon Sep 17 00:00:00 2001 From: clhost Date: Sun, 26 Nov 2017 12:59:30 +0300 Subject: [PATCH 4/8] Was added combiner --- MEASUREMENTS.md | 0 src/main/java/clhost/task1/WordCount.java | 1 + 2 files changed, 1 insertion(+) create mode 100644 MEASUREMENTS.md diff --git a/MEASUREMENTS.md b/MEASUREMENTS.md new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/clhost/task1/WordCount.java b/src/main/java/clhost/task1/WordCount.java index 948e2cd..f474603 100644 --- a/src/main/java/clhost/task1/WordCount.java +++ b/src/main/java/clhost/task1/WordCount.java @@ -61,6 +61,7 @@ public int run(final String[] args) throws Exception { job.setMapperClass(WordCount.WordCountMapper.class); job.setReducerClass(WordCount.WordCountReducer.class); + job.setCombinerClass(WordCount.WordCountReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); From eda9fab29a64a198edfce45ccd531984714cf2c8 Mon Sep 17 00:00:00 2001 From: clhost Date: Sun, 26 Nov 2017 13:00:33 +0300 Subject: [PATCH 5/8] fix something --- src/main/java/clhost/task4/NameWordCounter.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/clhost/task4/NameWordCounter.java b/src/main/java/clhost/task4/NameWordCounter.java index 25c3d19..22a483b 100644 --- a/src/main/java/clhost/task4/NameWordCounter.java +++ b/src/main/java/clhost/task4/NameWordCounter.java @@ -16,8 +16,6 @@ import java.io.IOException; import java.util.StringTokenizer; -import java.util.regex.Matcher; -import java.util.regex.Pattern; public class NameWordCounter extends Configured implements Tool { From 1ab89b41e55743acdc06bdc5d4bd0ea8614cc703 Mon Sep 17 00:00:00 2001 From: clhost Date: Sun, 26 Nov 2017 13:01:08 +0300 Subject: [PATCH 6/8] /target will ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index e3b6fa2..de7c187 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea /input /output* +/target \ No newline at end of file From 65003f3444d06d8cabf59cee5ae41c533c7d0f61 Mon Sep 17 00:00:00 2001 From: clhost Date: Sun, 26 Nov 2017 13:02:47 +0300 Subject: [PATCH 7/8] fix --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index de7c187..f1ec51b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ .idea /input /output* -/target \ No newline at end of file +*/target/** \ No newline at end of file From 587e9977b9ca9e768623e872621d1300ac9c7904 Mon Sep 17 00:00:00 2001 From: Denis Date: Sun, 26 Nov 2017 13:08:27 +0300 Subject: [PATCH 8/8] Update MEASUREMENTS.md --- MEASUREMENTS.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/MEASUREMENTS.md b/MEASUREMENTS.md index e69de29..c055ba4 100644 --- a/MEASUREMENTS.md +++ b/MEASUREMENTS.md @@ -0,0 +1,11 @@ +Выполнялись замеры на ноутбуке Xiaomi MI Air 13.3 2016 в режиме высокой производительности. + +Какие имеются результаты: + + WordCount job'a (без combiner): + + 1 час 54 минуты (грубый замер по аналоговым часам) + + WordCount job'a (используя combiner): + + 1 час 17 минут (грубый замер по аналоговым часам)