JobContext.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:7k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.mapreduce;
  19. import java.io.IOException;
  20. import org.apache.hadoop.conf.Configuration;
  21. import org.apache.hadoop.fs.Path;
  22. import org.apache.hadoop.io.RawComparator;
  23. import org.apache.hadoop.mapreduce.Mapper;
  24. import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
  25. import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
  26. import org.apache.hadoop.mapreduce.lib.partition.HashPartitioner;
  27. /**
  28.  * A read-only view of the job that is provided to the tasks while they
  29.  * are running.
  30.  */
  31. public class JobContext {
  32.   // Put all of the attribute names in here so that Job and JobContext are
  33.   // consistent.
  34.   protected static final String INPUT_FORMAT_CLASS_ATTR = 
  35.     "mapreduce.inputformat.class";
  36.   protected static final String MAP_CLASS_ATTR = "mapreduce.map.class";
  37.   protected static final String COMBINE_CLASS_ATTR = "mapreduce.combine.class";
  38.   protected static final String REDUCE_CLASS_ATTR = "mapreduce.reduce.class";
  39.   protected static final String OUTPUT_FORMAT_CLASS_ATTR = 
  40.     "mapreduce.outputformat.class";
  41.   protected static final String PARTITIONER_CLASS_ATTR = 
  42.     "mapreduce.partitioner.class";
  43.   protected final org.apache.hadoop.mapred.JobConf conf;
  44.   private final JobID jobId;
  45.   
  46.   public JobContext(Configuration conf, JobID jobId) {
  47.     this.conf = new org.apache.hadoop.mapred.JobConf(conf);
  48.     this.jobId = jobId;
  49.   }
  50.   /**
  51.    * Return the configuration for the job.
  52.    * @return the shared configuration object
  53.    */
  54.   public Configuration getConfiguration() {
  55.     return conf;
  56.   }
  57.   /**
  58.    * Get the unique ID for the job.
  59.    * @return the object with the job id
  60.    */
  61.   public JobID getJobID() {
  62.     return jobId;
  63.   }
  64.   
  65.   /**
  66.    * Get configured the number of reduce tasks for this job. Defaults to 
  67.    * <code>1</code>.
  68.    * @return the number of reduce tasks for this job.
  69.    */
  70.   public int getNumReduceTasks() {
  71.     return conf.getNumReduceTasks();
  72.   }
  73.   
  74.   /**
  75.    * Get the current working directory for the default file system.
  76.    * 
  77.    * @return the directory name.
  78.    */
  79.   public Path getWorkingDirectory() throws IOException {
  80.     return conf.getWorkingDirectory();
  81.   }
  82.   /**
  83.    * Get the key class for the job output data.
  84.    * @return the key class for the job output data.
  85.    */
  86.   public Class<?> getOutputKeyClass() {
  87.     return conf.getOutputKeyClass();
  88.   }
  89.   
  90.   /**
  91.    * Get the value class for job outputs.
  92.    * @return the value class for job outputs.
  93.    */
  94.   public Class<?> getOutputValueClass() {
  95.     return conf.getOutputValueClass();
  96.   }
  97.   /**
  98.    * Get the key class for the map output data. If it is not set, use the
  99.    * (final) output key class. This allows the map output key class to be
  100.    * different than the final output key class.
  101.    * @return the map output key class.
  102.    */
  103.   public Class<?> getMapOutputKeyClass() {
  104.     return conf.getMapOutputKeyClass();
  105.   }
  106.   /**
  107.    * Get the value class for the map output data. If it is not set, use the
  108.    * (final) output value class This allows the map output value class to be
  109.    * different than the final output value class.
  110.    *  
  111.    * @return the map output value class.
  112.    */
  113.   public Class<?> getMapOutputValueClass() {
  114.     return conf.getMapOutputValueClass();
  115.   }
  116.   /**
  117.    * Get the user-specified job name. This is only used to identify the 
  118.    * job to the user.
  119.    * 
  120.    * @return the job's name, defaulting to "".
  121.    */
  122.   public String getJobName() {
  123.     return conf.getJobName();
  124.   }
  125.   /**
  126.    * Get the {@link InputFormat} class for the job.
  127.    * 
  128.    * @return the {@link InputFormat} class for the job.
  129.    */
  130.   @SuppressWarnings("unchecked")
  131.   public Class<? extends InputFormat<?,?>> getInputFormatClass() 
  132.      throws ClassNotFoundException {
  133.     return (Class<? extends InputFormat<?,?>>) 
  134.       conf.getClass(INPUT_FORMAT_CLASS_ATTR, TextInputFormat.class);
  135.   }
  136.   /**
  137.    * Get the {@link Mapper} class for the job.
  138.    * 
  139.    * @return the {@link Mapper} class for the job.
  140.    */
  141.   @SuppressWarnings("unchecked")
  142.   public Class<? extends Mapper<?,?,?,?>> getMapperClass() 
  143.      throws ClassNotFoundException {
  144.     return (Class<? extends Mapper<?,?,?,?>>) 
  145.       conf.getClass(MAP_CLASS_ATTR, Mapper.class);
  146.   }
  147.   /**
  148.    * Get the combiner class for the job.
  149.    * 
  150.    * @return the combiner class for the job.
  151.    */
  152.   @SuppressWarnings("unchecked")
  153.   public Class<? extends Reducer<?,?,?,?>> getCombinerClass() 
  154.      throws ClassNotFoundException {
  155.     return (Class<? extends Reducer<?,?,?,?>>) 
  156.       conf.getClass(COMBINE_CLASS_ATTR, null);
  157.   }
  158.   /**
  159.    * Get the {@link Reducer} class for the job.
  160.    * 
  161.    * @return the {@link Reducer} class for the job.
  162.    */
  163.   @SuppressWarnings("unchecked")
  164.   public Class<? extends Reducer<?,?,?,?>> getReducerClass() 
  165.      throws ClassNotFoundException {
  166.     return (Class<? extends Reducer<?,?,?,?>>) 
  167.       conf.getClass(REDUCE_CLASS_ATTR, Reducer.class);
  168.   }
  169.   /**
  170.    * Get the {@link OutputFormat} class for the job.
  171.    * 
  172.    * @return the {@link OutputFormat} class for the job.
  173.    */
  174.   @SuppressWarnings("unchecked")
  175.   public Class<? extends OutputFormat<?,?>> getOutputFormatClass() 
  176.      throws ClassNotFoundException {
  177.     return (Class<? extends OutputFormat<?,?>>) 
  178.       conf.getClass(OUTPUT_FORMAT_CLASS_ATTR, TextOutputFormat.class);
  179.   }
  180.   /**
  181.    * Get the {@link Partitioner} class for the job.
  182.    * 
  183.    * @return the {@link Partitioner} class for the job.
  184.    */
  185.   @SuppressWarnings("unchecked")
  186.   public Class<? extends Partitioner<?,?>> getPartitionerClass() 
  187.      throws ClassNotFoundException {
  188.     return (Class<? extends Partitioner<?,?>>) 
  189.       conf.getClass(PARTITIONER_CLASS_ATTR, HashPartitioner.class);
  190.   }
  191.   /**
  192.    * Get the {@link RawComparator} comparator used to compare keys.
  193.    * 
  194.    * @return the {@link RawComparator} comparator used to compare keys.
  195.    */
  196.   public RawComparator<?> getSortComparator() {
  197.     return conf.getOutputKeyComparator();
  198.   }
  199.   /**
  200.    * Get the pathname of the job's jar.
  201.    * @return the pathname
  202.    */
  203.   public String getJar() {
  204.     return conf.getJar();
  205.   }
  206.   /** 
  207.    * Get the user defined {@link RawComparator} comparator for 
  208.    * grouping keys of inputs to the reduce.
  209.    * 
  210.    * @return comparator set by the user for grouping values.
  211.    * @see Job#setGroupingComparatorClass(Class) for details.  
  212.    */
  213.   public RawComparator<?> getGroupingComparator() {
  214.     return conf.getOutputValueGroupingComparator();
  215.   }
  216. }