MAPREDUCE-1248. Fixes redudant memory copying in StreamKeyValUtil. Contributed by Ruibang He.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/mapreduce/trunk@961578 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/CHANGES.txt b/CHANGES.txt
index c908b82..b1a74f9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -72,6 +72,9 @@
 
     MAPREDUCE-1893. Slive with multiple reducers. (shv)
 
+    MAPREDUCE-1248. Fixes redudant memory copying in StreamKeyValUtil.
+    (Ruibang He via amareshwari)
+
   OPTIMIZATIONS
 
     MAPREDUCE-1354. Enhancements to JobTracker for better performance and
diff --git a/src/contrib/streaming/src/java/org/apache/hadoop/streaming/StreamKeyValUtil.java b/src/contrib/streaming/src/java/org/apache/hadoop/streaming/StreamKeyValUtil.java
index 4d57518..75e05dc 100644
--- a/src/contrib/streaming/src/java/org/apache/hadoop/streaming/StreamKeyValUtil.java
+++ b/src/contrib/streaming/src/java/org/apache/hadoop/streaming/StreamKeyValUtil.java
@@ -69,13 +69,9 @@
       throw new IllegalArgumentException("splitPos must be in the range " +
                                          "[" + start + ", " + (start+length) + "]: " + splitPos);
     int keyLen = (splitPos-start);
-    byte [] keyBytes = new byte[keyLen];
-    System.arraycopy(utf, start, keyBytes, 0, keyLen);
     int valLen = (start+length)-splitPos-separatorLength;
-    byte [] valBytes = new byte[valLen];
-    System.arraycopy(utf, splitPos+separatorLength, valBytes, 0, valLen);
-    key.set(keyBytes);
-    val.set(valBytes);
+    key.set(utf, start, keyLen);
+    val.set(utf, splitPos+separatorLength, valLen);
   }
 
   /**