Changes between Initial Version and Version 1 of waue/2009/0716


Ignore:
Timestamp:
Jul 16, 2009, 5:38:43 PM (15 years ago)
Author:
waue
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • waue/2009/0716

    v1 v1  
     1
     2 = 以下在run time時有錯 =
     3
     4 原因:Type mismatch in key from map: expected org.apache.hadoop.io.LongWritable, recieved org.apache.hadoop.io.Text
     5
     6 Map的key從LongWritable 強制轉型到 String,似乎會遇到一些錯
     7
     8 * keyvalue.java
     9
     10{{{
     11#!java
     12package nchc.keyvalue;
     13
     14import org.apache.hadoop.fs.Path;
     15import org.apache.hadoop.mapred.FileInputFormat;
     16import org.apache.hadoop.mapred.FileOutputFormat;
     17import org.apache.hadoop.mapred.JobClient;
     18import org.apache.hadoop.mapred.JobConf;
     19
     20public class keyvalue{
     21        public static void main(String[] args) {
     22                String[] argv = {"input","oh9","1","1"};
     23                args = argv;
     24               
     25                if (args.length < 4) {
     26                        System.out.println("keyvalue <inDir> <outDir> <m> <r>");
     27                        return;
     28                }
     29               
     30                JobConf conf = new JobConf(keyvalue.class);
     31                conf.setJobName("keyValue");
     32                FileInputFormat.setInputPaths(conf, args[0]);
     33                FileOutputFormat.setOutputPath(conf, new Path(args[1]));
     34                conf.setNumMapTasks(Integer.parseInt(args[2]));
     35                conf.setNumReduceTasks(Integer.parseInt(args[3]));
     36                conf.setMapperClass(kvM.class);
     37                conf.setReducerClass(kvR.class);
     38
     39                long start = System.nanoTime();
     40                try {
     41                        JobClient.runJob(conf);
     42                } catch (Exception e) {
     43                        e.printStackTrace();
     44                }
     45                long period = System.nanoTime() - start;
     46                System.err.println(period*(1e-9) + " secs.");
     47        }
     48}
     49
     50}}}
     51
     52 * kvm.java
     53
     54{{{
     55package nchc.keyvalue;
     56
     57import java.io.IOException;
     58
     59import org.apache.hadoop.io.LongWritable;
     60import org.apache.hadoop.io.Text;
     61import org.apache.hadoop.mapred.MapReduceBase;
     62import org.apache.hadoop.mapred.Mapper;
     63import org.apache.hadoop.mapred.OutputCollector;
     64import org.apache.hadoop.mapred.Reporter;
     65
     66public class kvM extends MapReduceBase implements
     67                Mapper<LongWritable, Text, Text, Text> {
     68
     69        public void map(LongWritable key, Text value,
     70                        OutputCollector<Text, Text> output, Reporter report)
     71                        throws IOException {
     72                Text keyv = new Text(key.toString());
     73                output.collect(keyv, value);
     74        }
     75
     76}
     77}}}
     78
     79 * kvr.java
     80
     81{{{
     82package nchc.keyvalue;
     83
     84import java.io.IOException;
     85import java.util.Iterator;
     86
     87import org.apache.hadoop.io.Text;
     88import org.apache.hadoop.mapred.MapReduceBase;
     89import org.apache.hadoop.mapred.OutputCollector;
     90import org.apache.hadoop.mapred.Reducer;
     91import org.apache.hadoop.mapred.Reporter;
     92
     93public class kvR extends MapReduceBase implements
     94                Reducer< Text, Text, Text, Text> {
     95        public void reduce(Text key, Iterator<Text> values,
     96                        OutputCollector<Text, Text> output, Reporter report)
     97                        throws IOException {
     98                while (values.hasNext()) {
     99                        Text keyv = new Text("< "+key+" , ");
     100                        Text val = new Text(values.next()+">");
     101                        output.collect(keyv, val);
     102                }
     103        }
     104}
     105}}}