@Override
    public void readFields(DataInput dataInput) throws IOException {
      int len;
      byte[] buf;

      locations = new ArrayList<>();
      length = dataInput.readLong();
      LOG.debug("Read length of " + length);
      int numElements = dataInput.readInt();
      LOG.debug("Read numElements of " + numElements);
      for (int i = 0; i < numElements; i++) {
        len = dataInput.readInt();
        LOG.debug("Read file length of " + len);
        buf = new byte[len];
        dataInput.readFully(buf);
        locations.add(new String(buf));
      }
      bucketNum = dataInput.readInt();
      LOG.debug("Read bucket number of " + bucketNum);
      len = dataInput.readInt();
      LOG.debug("Read base path length of " + len);
      Integer baseAttemptId = null;
      if (len > 0) {
        buf = new byte[len];
        dataInput.readFully(buf);
        base = new Path(new String(buf));
        len = dataInput.readInt();
        if (len > 0) {
          buf = new byte[len];
          dataInput.readFully(buf);
          String baseAttemptIdString = new String(buf);
          baseAttemptId = Integer.valueOf(baseAttemptIdString);
        }
      }
      numElements = dataInput.readInt();
      deltasToAttemptId = new HashMap<>();
      deltas = new Path[numElements];
      for (int i = 0; i < numElements; i++) {
        len = dataInput.readInt();
        buf = new byte[len];
        dataInput.readFully(buf);
        deltas[i] = new Path(new String(buf));
        len = dataInput.readInt();
        Integer attemptId = null;
        if (len > 0) {
          buf = new byte[len];
          dataInput.readFully(buf);
          String attemptIdString = new String(buf);
          attemptId = Integer.valueOf(attemptIdString);
        }
        deltasToAttemptId.put(deltas[i].getName(), attemptId);
      }
      if (baseAttemptId != null) {
        deltasToAttemptId.put(base.getName(), baseAttemptId);
      }
    }
@param hadoopConf
@param bucket bucket to be processed by this split
@param files actual files this split should process.  It is assumed the caller has already
             parsed out the files in base and deltas to populate this list.  Includes copy_N
@param base directory of the base, or the partition/table location if the files are in old
            style.  Can be null.
@param deltas directories of the delta files.
@throws IOException
ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/MRCompactor.java