Index: core/src/main/java/org/apache/hama/bsp/BSPJobClient.java =================================================================== --- core/src/main/java/org/apache/hama/bsp/BSPJobClient.java (revision 1673408) +++ core/src/main/java/org/apache/hama/bsp/BSPJobClient.java (working copy) @@ -631,10 +631,7 @@ for (int i = 0; i < len; ++i) { RawSplit split = new RawSplit(); split.readFields(in); - if (split.getPartitionID() != Integer.MIN_VALUE) - result[split.getPartitionID()] = split; - else - result[i] = split; + result[i] = split; } return result; } @@ -1080,7 +1077,6 @@ private String splitClass; private BytesWritable bytes = new BytesWritable(); private String[] locations; - private int partitionID = Integer.MIN_VALUE; long dataLength; public void setBytes(byte[] data, int offset, int length) { @@ -1091,14 +1087,6 @@ splitClass = className; } - public void setPartitionID(int id) { - this.partitionID = id; - } - - public int getPartitionID() { - return partitionID; - } - public String getClassName() { return splitClass; } @@ -1123,7 +1111,6 @@ public void readFields(DataInput in) throws IOException { splitClass = Text.readString(in); dataLength = in.readLong(); - partitionID = in.readInt(); bytes.readFields(in); int len = WritableUtils.readVInt(in); locations = new String[len]; @@ -1136,7 +1123,6 @@ public void write(DataOutput out) throws IOException { Text.writeString(out, splitClass); out.writeLong(dataLength); - out.writeInt(partitionID); bytes.write(out); WritableUtils.writeVInt(out, locations.length); for (String location : locations) { Index: core/src/main/java/org/apache/hama/bsp/FileInputFormat.java =================================================================== --- core/src/main/java/org/apache/hama/bsp/FileInputFormat.java (revision 1673408) +++ core/src/main/java/org/apache/hama/bsp/FileInputFormat.java (working copy) @@ -178,6 +178,18 @@ // generate splits List splits = new ArrayList(); FileStatus[] files = listStatus(job); + + // take the short circuit path if we have already partitioned + if (numSplits == files.length) { + for (FileStatus file : files) { + if (file != null) { + splits.add(new FileSplit(file.getPath(), 0, file.getLen(), + new String[0])); + } + } + return splits.toArray(new FileSplit[splits.size()]); + } + for (FileStatus file : files) { Path path = file.getPath(); FileSystem fs = path.getFileSystem(job.getConfiguration()); Index: core/src/main/java/org/apache/hama/bsp/LocalBSPRunner.java =================================================================== --- core/src/main/java/org/apache/hama/bsp/LocalBSPRunner.java (revision 1673408) +++ core/src/main/java/org/apache/hama/bsp/LocalBSPRunner.java (working copy) @@ -242,7 +242,6 @@ String splitname = null; BytesWritable realBytes = null; if (splits != null) { - LOG.debug(id + ", " + splits[id].getPartitionID()); splitname = splits[id].getClassName(); realBytes = splits[id].getBytes(); }