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

网格计算

开发平台:

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.streaming;
  19. import java.io.*;
  20. import org.apache.hadoop.streaming.Environment;
  21. /** A minimal Java implementation of /usr/bin/tr.
  22.     Used to test the usage of external applications without adding
  23.     platform-specific dependencies.
  24.  */
  25. public class TrAppReduce
  26. {
  27.   public TrAppReduce(char find, char replace)
  28.   {
  29.     this.find = find;
  30.     this.replace = replace;
  31.   }
  32.   void testParentJobConfToEnvVars() throws IOException
  33.   {
  34.     env = new Environment();
  35.     // test that some JobConf properties are exposed as expected     
  36.     // Note the dots translated to underscore: 
  37.     // property names have been escaped in PipeMapRed.safeEnvVarName()
  38.     expect("mapred_job_tracker", "local");
  39.     //expect("mapred_local_dir", "build/test/mapred/local");
  40.     expectDefined("mapred_local_dir");
  41.     expect("mapred_output_format_class", "org.apache.hadoop.mapred.TextOutputFormat");
  42.     expect("mapred_output_key_class", "org.apache.hadoop.io.Text");
  43.     expect("mapred_output_value_class", "org.apache.hadoop.io.Text");
  44.     expect("mapred_task_is_map", "false");
  45.     expectDefined("mapred_task_id");
  46.     expectDefined("io_sort_factor");
  47.     // the FileSplit context properties are not available in local hadoop..
  48.     // so can't check them in this test.
  49.   }
  50.   // this runs in a subprocess; won't use JUnit's assertTrue()    
  51.   void expect(String evName, String evVal) throws IOException
  52.   {
  53.     String got = env.getProperty(evName);
  54.     if (!evVal.equals(got)) {
  55.       String msg = "FAIL evName=" + evName + " got=" + got + " expect=" + evVal;
  56.       throw new IOException(msg);
  57.     }
  58.   }
  59.   void expectDefined(String evName) throws IOException
  60.   {
  61.     String got = env.getProperty(evName);
  62.     if (got == null) {
  63.       String msg = "FAIL evName=" + evName + " is undefined. Expect defined.";
  64.       throw new IOException(msg);
  65.     }
  66.   }
  67.   public void go() throws IOException
  68.   {
  69.     testParentJobConfToEnvVars();
  70.     BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  71.     String line;
  72.     while ((line = in.readLine()) != null) {
  73.       String out = line.replace(find, replace);
  74.       System.out.println(out);
  75.     }
  76.   }
  77.   public static void main(String[] args) throws IOException
  78.   {
  79.     args[0] = CUnescape(args[0]);
  80.     args[1] = CUnescape(args[1]);
  81.     TrAppReduce app = new TrAppReduce(args[0].charAt(0), args[1].charAt(0));
  82.     app.go();
  83.   }
  84.   public static String CUnescape(String s)
  85.   {
  86.     if (s.equals("\n")) {
  87.       return "n";
  88.     } else {
  89.       return s;
  90.     }
  91.   }
  92.   char find;
  93.   char replace;
  94.   Environment env;
  95. }