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

网格计算

开发平台:

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. /**
  21.  * Output an arbitrary number of stderr lines before or after
  22.  * consuming the keys/values from stdin.
  23.  */
  24. public class StderrApp
  25. {
  26.   /**
  27.    * Print preWriteLines to stderr, pausing sleep ms between each
  28.    * output, then consume stdin and echo it to stdout, then write
  29.    * postWriteLines to stderr.
  30.    */
  31.   public static void go(int preWriteLines, int sleep, int postWriteLines) throws IOException {
  32.     BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  33.     String line;
  34.        
  35.     while (preWriteLines > 0) {
  36.       --preWriteLines;
  37.       System.err.println("some stderr output before reading input, "
  38.                          + preWriteLines + " lines remaining, sleeping " + sleep);
  39.       try {
  40.         Thread.sleep(sleep);
  41.       } catch (InterruptedException e) {}
  42.     }
  43.     
  44.     while ((line = in.readLine()) != null) {
  45.       System.out.println(line);
  46.     }
  47.     
  48.     while (postWriteLines > 0) {
  49.       --postWriteLines;
  50.       System.err.println("some stderr output after reading input, lines remaining "
  51.                          + postWriteLines);
  52.     }
  53.   }
  54.   public static void main(String[] args) throws IOException {
  55.     if (args.length < 3) {
  56.       System.err.println("Usage: StderrApp PREWRITE SLEEP POSTWRITE");
  57.       return;
  58.     }
  59.     int preWriteLines = Integer.parseInt(args[0]);
  60.     int sleep = Integer.parseInt(args[1]);
  61.     int postWriteLines = Integer.parseInt(args[2]);
  62.     
  63.     go(preWriteLines, sleep, postWriteLines);
  64.   }
  65. }