/** * Returns the compatible version values. * * <p>By default, the base implementation recognizes only the current version (identified by {@link #getVersion()}) * as compatible. This method can be used as a hook and may be overridden to identify more compatible versions. * * @return an array of integers representing the compatible version values. */ public int[] getCompatibleVersions() { return new int[] {getVersion()}; }
@Override public GenericInputSplit[] createInputSplits(int minNumSplits) { GenericInputSplit[] splits = new GenericInputSplit[minNumSplits]; for (int i = 0; i < minNumSplits; i++) { splits[i] = new GenericInputSplit(i, minNumSplits); } return splits; }
@Override protected void serialize(T record, DataOutputView dataOutputView) throws IOException { record.write(dataOutputView); } }
@Override public void open(GenericInputSplit split) throws IOException { super.open(split); this.splitIterator = this.source.getSplit(split.getSplitNumber(), split.getTotalNumberOfSplits()); }
@Override public void open(GenericInputSplit split) throws IOException { this.partitionNumber = split.getSplitNumber(); }
@Override public void write(DataOutputView out) throws IOException { out.write(VERSIONED_IDENTIFIER); super.write(out); }
@Override protected T deserialize(T reuse, DataInputView dataInput) throws IOException { reuse.read(dataInput); return reuse; } }
@Override public void read(DataInputView in) throws IOException { super.read(in); this.data = in.readUTF(); }
private void resolveVersionRead(int readVersion) throws VersionMismatchException { int[] compatibleVersions = getCompatibleVersions(); for (int compatibleVersion : compatibleVersions) { if (compatibleVersion == readVersion) { return; } } throw new VersionMismatchException( "Incompatible version: found " + readVersion + ", compatible versions are " + Arrays.toString(compatibleVersions)); } }
@Override public void write(DataOutputView out) throws IOException { super.write(out); out.writeUTF(data); }
@Override public void read(DataInputView in) throws IOException { this.readVersion = in.readInt(); resolveVersionRead(readVersion); }
@Override public boolean equals(Object obj) { if (obj == this) { return true; } else if (obj instanceof FileInputSplit && super.equals(obj)) { FileInputSplit other = (FileInputSplit) obj; return this.start == other.start && this.length == other.length && (this.file == null ? other.file == null : (other.file != null && this.file.equals(other.file))); } else { return false; } }
@Override public InputSplit[] createInputSplits(int minNumSplits) throws IOException { if (parameterValues == null) { return new GenericInputSplit[]{new GenericInputSplit(0, 1)}; } GenericInputSplit[] ret = new GenericInputSplit[parameterValues.length]; for (int i = 0; i < ret.length; i++) { ret[i] = new GenericInputSplit(i, ret.length); } return ret; }
@Override public void open(GenericInputSplit split) throws IOException { this.partitionNumber = split.getSplitNumber(); }
@Override public void write(DataOutputView out) throws IOException { super.write(out); out.writeUTF(data); }
/** * Returns the found serialization version. If this instance was not read from serialized bytes * but simply instantiated, then the current version is returned. * * @return the read serialization version, or the current version if the instance was not read from bytes. */ public int getReadVersion() { return (readVersion == Integer.MIN_VALUE) ? getVersion() : readVersion; }
@Override public InputSplit[] createInputSplits(int minNumSplits) { return new GenericInputSplit[]{new GenericInputSplit(0, 1)}; }
@Override public void write(DataOutputView out) throws IOException { out.writeInt(getVersion()); }
@Override public GenericInputSplit[] createInputSplits(int numSplits) throws IOException { if (numSplits < 1) { throw new IllegalArgumentException("Number of input splits has to be at least 1."); } numSplits = (this instanceof NonParallelInput) ? 1 : numSplits; GenericInputSplit[] splits = new GenericInputSplit[numSplits]; for (int i = 0; i < splits.length; i++) { splits[i] = new GenericInputSplit(i, numSplits); } return splits; }
@Override public GenericInputSplit[] createInputSplits(int numSplits) throws IOException { if (numSplits < 1) { throw new IllegalArgumentException("Number of input splits has to be at least 1."); } numSplits = (this instanceof NonParallelInput) ? 1 : numSplits; GenericInputSplit[] splits = new GenericInputSplit[numSplits]; for (int i = 0; i < splits.length; i++) { splits[i] = new GenericInputSplit(i, numSplits); } return splits; }