瀏覽代碼

MAPREDUCE-2779. JobSplitWriter.java can't handle large job.split file. Contributed by Ming Ma.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.22@1177787 13f79535-47bb-0310-9956-ffa450edef68
Konstantin Shvachko 13 年之前
父節點
當前提交
026b4446b7
共有 2 個文件被更改,包括 9 次插入6 次删除
  1. 3 0
      mapreduce/CHANGES.txt
  2. 6 6
      mapreduce/src/java/org/apache/hadoop/mapreduce/split/JobSplitWriter.java

+ 3 - 0
mapreduce/CHANGES.txt

@@ -613,6 +613,9 @@ Release 0.22.0 - Unreleased
     MAPREDUCE-3026. Fix NPE in mapred queue -list with hierarchical queues.
     (Mayank Bansal via shv)
 
+    MAPREDUCE-2779. JobSplitWriter.java can't handle large job.split file.
+    (Ming Ma via shv)
+
 Release 0.21.1 - Unreleased
 
   NEW FEATURES

+ 6 - 6
mapreduce/src/java/org/apache/hadoop/mapreduce/split/JobSplitWriter.java

@@ -114,15 +114,15 @@ public class JobSplitWriter {
     if (array.length != 0) {
       SerializationFactory factory = new SerializationFactory(conf);
       int i = 0;
-      long offset = out.size();
+      long offset = out.getPos();
       for(T split: array) {
-        int prevCount = out.size();
+        long prevCount = out.getPos();
         Text.writeString(out, split.getClass().getName());
         Serializer<T> serializer = 
           factory.getSerializer((Class<T>) split.getClass());
         serializer.open(out);
         serializer.serialize(split);
-        int currCount = out.size();
+        long currCount = out.getPos();
         info[i++] = 
           new JobSplit.SplitMetaInfo( 
               split.getLocations(), offset,
@@ -139,12 +139,12 @@ public class JobSplitWriter {
     SplitMetaInfo[] info = new SplitMetaInfo[splits.length];
     if (splits.length != 0) {
       int i = 0;
-      long offset = out.size();
+      long offset = out.getPos();
       for(org.apache.hadoop.mapred.InputSplit split: splits) {
-        int prevLen = out.size();
+        long prevLen = out.getPos();
         Text.writeString(out, split.getClass().getName());
         split.write(out);
-        int currLen = out.size();
+        long currLen = out.getPos();
         info[i++] = new JobSplit.SplitMetaInfo( 
             split.getLocations(), offset,
             split.getLength());