Writable (Apache Hadoop Main 3.5.0 API)
Description: declaration: package: org.apache.hadoop.io, interface: Writable

Package org.apache.hadoop.io

# Interface Writable

All Known Subinterfaces:
  `Counter`, `CounterGroup`, `CounterGroupBase<T>`, `InputSplit`, `InputSplitWithLocationInfo`, `WritableComparable<T>`

All Known Implementing Classes:
  `AbstractCounters`, `AbstractDelegationTokenIdentifier`, `AbstractMapWritable`, `AccessControlList`, `AggregatedLogFormat.LogKey`, `AMRMTokenIdentifier`, `ArrayPrimitiveWritable`, `ArrayWritable`, `BloomFilter`, `BooleanWritable`, `BytesWritable`, `ByteWritable`, `ClientToAMTokenIdentifier`, `ClusterMetrics`, `ClusterStatus`, `CombineFileSplit`, `CombineFileSplit`, `CompositeInputSplit`, `CompositeInputSplit`, `CompressedWritable`, `Configuration`, `ContainerTokenIdentifier`, `ContentSummary`, `Counters`, `Counters`, `Counters.Counter`, `Counters.Group`, `CountingBloomFilter`, `Credentials`, `DirEntry`, `DoubleWritable`, `DynamicBloomFilter`, `EnumSetWritable`, `FileChecksum`, `FileSplit`, `FileSplit`, `FileStatus`, `org.apache.hadoop.util.bloom.Filter`, `FloatWritable`, `FsCreateModes`, `FsPermission`, `FsServerDefaults`, `FsStatus`, `GenericWritable`, `ID`, `ID`, `IntWritable`, `JobConf`, `JobID`, `JobID`, `JobQueueInfo`, `JobStatus`, `JobStatus`, `LocatedFileStatus`, `LongWritable`, `MapWritable`, `MD5Hash`, `MultiFileSplit`, `NMTokenIdentifier`, `NullWritable`, `ObjectWritable`, `QueueAclsInfo`, `QueueInfo`, `Record`, `RetouchedBloomFilter`, `RMDelegationTokenIdentifier`, `ShortWritable`, `SortedMapWritable`, `TaskAttemptID`, `TaskAttemptID`, `TaskCompletionEvent`, `TaskCompletionEvent`, `TaskID`, `TaskID`, `TaskReport`, `org.apache.hadoop.mapreduce.TaskReport`, `TaskTrackerInfo`, `Text`, `TimelineDelegationTokenIdentifier`, `Token`, `TokenIdentifier`, `TupleWritable`, `TupleWritable`, `TwoDArrayWritable`, `VersionedWritable`, `VIntWritable`, `VLongWritable`, `YarnConfiguration`, `org.apache.hadoop.yarn.security.client.YARNDelegationTokenIdentifier`

@Public @Stable public interface Writable
A serializable object which implements a simple, efficient, serialization protocol, based on `DataInput` and `DataOutput`.

Any `key` or `value` type in the Hadoop Map-Reduce framework implements this interface.

Implementations typically implement a static `read(DataInput)` method which constructs a new instance, calls `readFields(DataInput)` and returns the instance.

Example:

>          public class MyWritable implements Writable {
>            // Some data
>            private int counter;
>            private long timestamp;

>            // Default constructor to allow (de)serialization
>            MyWritable() { }

>            public void write(DataOutput out) throws IOException {
>              out.writeInt(counter);
>              out.writeLong(timestamp);
>            }

>            public void readFields(DataInput in) throws IOException {
>              counter = in.readInt();
>              timestamp = in.readLong();
>            }

>            public static MyWritable read(DataInput in) throws IOException {
>              MyWritable w = new MyWritable();
>              w.readFields(in);
>              return w;
>            }
>          }

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `readFields(DataInput in)`
  Deserialize the fields of this object from `in`.
  `void`
  `write(DataOutput out)`
  Serialize the fields of this object to `out`.

- ## Method Details

  - ### write

    void write(DataOutput out) throws IOException
    Serialize the fields of this object to `out`.
    Parameters:
      `out` - `DataOuput` to serialize this object into.
    Throws:
      `IOException` - any other problem for write.

  - ### readFields

    void readFields(DataInput in) throws IOException
    Deserialize the fields of this object from `in`.

    For efficiency, implementations should attempt to re-use storage in the existing object where possible.

    Parameters:
      `in` - `DataInput` to deseriablize this object from.
    Throws:
      `IOException` - any other problem for readFields.