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
19 package org.apache.giraph.bsp;
20
21 import java.io.DataInput;
22 import java.io.DataOutput;
23 import java.io.IOException;
24
25 import org.apache.hadoop.io.Writable;
26 import org.apache.hadoop.mapreduce.InputSplit;
27
28 /**
29 * This InputSplit will not give any ordering or location data.
30 * It is used internally by BspInputFormat (which determines
31 * how many tasks to run the application on). Users should not use this
32 * directly.
33 */
34 public class BspInputSplit extends InputSplit implements Writable {
35 /** Number of splits */
36 private int numSplits = -1;
37 /** Split index */
38 private int splitIndex = -1;
39
40 /**
41 * Reflection constructor.
42 */
43 public BspInputSplit() { }
44
45 /**
46 * Constructor used by {@link BspInputFormat}.
47 *
48 * @param splitIndex Index of this split.
49 * @param numSplits Total number of splits.
50 */
51 public BspInputSplit(int splitIndex, int numSplits) {
52 this.splitIndex = splitIndex;
53 this.numSplits = numSplits;
54 }
55
56 @Override
57 public long getLength() throws IOException, InterruptedException {
58 return 0;
59 }
60
61 @Override
62 public String[] getLocations() throws IOException, InterruptedException {
63 return new String[]{};
64 }
65
66 @Override
67 public void readFields(DataInput in) throws IOException {
68 splitIndex = in.readInt();
69 numSplits = in.readInt();
70 }
71
72 @Override
73 public void write(DataOutput out) throws IOException {
74 out.writeInt(splitIndex);
75 out.writeInt(numSplits);
76 }
77
78 /**
79 * Get the index of this split.
80 *
81 * @return Index of this split.
82 */
83 public int getSplitIndex() {
84 return splitIndex;
85 }
86
87 /**
88 * Get the number of splits for this application.
89 *
90 * @return Total number of splits.
91 */
92 public int getNumSplits() {
93 return numSplits;
94 }
95
96 @Override
97 public String toString() {
98 return "'" + getClass().getCanonicalName() +
99 ", index=" + getSplitIndex() + ", num=" + getNumSplits();
100 }
101 }