You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cu...@apache.org on 2006/08/01 22:21:38 UTC
svn commit: r427708 - in /lucene/hadoop/trunk: CHANGES.txt
src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeMapRed.java
Author: cutting
Date: Tue Aug 1 13:21:38 2006
New Revision: 427708
URL: http://svn.apache.org/viewvc?rev=427708&view=rev
Log:
HADOOP-409. Streaming contrib module: make configuration properties available to commands as environment variables.
Modified:
lucene/hadoop/trunk/CHANGES.txt
lucene/hadoop/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeMapRed.java
Modified: lucene/hadoop/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?rev=427708&r1=427707&r2=427708&view=diff
==============================================================================
--- lucene/hadoop/trunk/CHANGES.txt (original)
+++ lucene/hadoop/trunk/CHANGES.txt Tue Aug 1 13:21:38 2006
@@ -120,6 +120,10 @@
34. HADOOP-345. Permit iteration over Configuration key/value pairs.
(Michel Tourn via cutting)
+35. HADOOP-409. Streaming contrib module: make Hadoop configuration
+ properties available to commands as environment variables.
+ (Michel Tourn via cutting)
+
Release 0.4.0 - 2006-06-28
Modified: lucene/hadoop/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeMapRed.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeMapRed.java?rev=427708&r1=427707&r2=427708&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeMapRed.java (original)
+++ lucene/hadoop/trunk/src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeMapRed.java Tue Aug 1 13:21:38 2006
@@ -21,6 +21,7 @@
import java.io.IOException;
import java.util.Date;
import java.util.Map;
+import java.util.Iterator;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Properties;
@@ -208,6 +209,7 @@
logprintln("sideEffectPath_=" + sideEffectPath_);
Environment childEnv = (Environment)StreamUtil.env().clone();
+ addJobConfToEnvironment(job_, childEnv);
addEnvironment(childEnv, job_.get("stream.addenvironment"));
sim = Runtime.getRuntime().exec(argvSplit, childEnv.toArray());
@@ -269,6 +271,37 @@
}
}
+ void addJobConfToEnvironment(JobConf conf, Properties env)
+ {
+ logprintln("addJobConfToEnvironment: begin");
+ Iterator it = conf.entries();
+ while(it.hasNext()) {
+ Map.Entry en = (Map.Entry)it.next();
+ String name = (String)en.getKey();
+ String value = (String)en.getValue();
+ name = safeEnvVarName(name);
+ envPut(env, name, value);
+ }
+ logprintln("addJobConfToEnvironment: end");
+ }
+
+ String safeEnvVarName(String var)
+ {
+ StringBuffer safe = new StringBuffer();
+ int len = var.length();
+ for(int i=0; i<len; i++) {
+ char c = var.charAt(i);
+ char s;
+ if((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
+ s = c;
+ } else {
+ s = '_';
+ }
+ safe.append(s);
+ }
+ return safe.toString();
+ }
+
void addEnvironment(Properties env, String nameVals)
{
// encoding "a=b c=d" from StreamJob
@@ -279,12 +312,17 @@
if(pair.length != 2) {
logprintln("Skip ev entry:" + nv[i]);
} else {
- logprintln("Add ev entry:" + nv[i]);
- env.put(pair[0], pair[1]);
+ envPut(env, pair[0], pair[1]);
}
}
}
+ void envPut(Properties env, String name, String value)
+ {
+ logprintln("Add ev entry:" + name + "=" + value);
+ env.put(name, value);
+ }
+
/** .. and if successful: delete the task log */
void appendLogToJobLog(String status)
{