TrApp.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 TrApp
  26. {
  27.   public TrApp(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", "true");
  45.     expectDefined("mapred_task_id");
  46.     expectDefined("map_input_file");
  47.     expect("map_input_start", "0");
  48.     expectDefined("map_input_length");
  49.     expectDefined("io_sort_factor");
  50.     // the FileSplit context properties are not available in local hadoop..
  51.     // so can't check them in this test.
  52.   }
  53.   // this runs in a subprocess; won't use JUnit's assertTrue()    
  54.   void expect(String evName, String evVal) throws IOException
  55.   {
  56.     String got = env.getProperty(evName);
  57.     if (!evVal.equals(got)) {
  58.       String msg = "FAIL evName=" + evName + " got=" + got + " expect=" + evVal;
  59.       throw new IOException(msg);
  60.     }
  61.   }
  62.   void expectDefined(String evName) throws IOException
  63.   {
  64.     String got = env.getProperty(evName);
  65.     if (got == null) {
  66.       String msg = "FAIL evName=" + evName + " is undefined. Expect defined.";
  67.       throw new IOException(msg);
  68.     }
  69.   }
  70.   public void go() throws IOException
  71.   {
  72.     testParentJobConfToEnvVars();
  73.     BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  74.     String line;
  75.     while ((line = in.readLine()) != null) {
  76.       String out = line.replace(find, replace);
  77.       System.out.println(out);
  78.       System.err.println("reporter:counter:UserCounters,InputLines,1");
  79.     }
  80.   }
  81.   public static void main(String[] args) throws IOException
  82.   {
  83.     args[0] = CUnescape(args[0]);
  84.     args[1] = CUnescape(args[1]);
  85.     TrApp app = new TrApp(args[0].charAt(0), args[1].charAt(0));
  86.     app.go();
  87.   }
  88.   public static String CUnescape(String s)
  89.   {
  90.     if (s.equals("\n")) {
  91.       return "n";
  92.     } else {
  93.       return s;
  94.     }
  95.   }
  96.   char find;
  97.   char replace;
  98.   Environment env;
  99. }