All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xiaomi.infra.galaxy.talos.mapreduce.input.TalosTopicInputSplit Maven / Gradle / Ivy

The newest version!
/**
 * Copyright 2016, Xiaomi.
 * All rights reserved.
 * Author: [email protected]
 */

package com.xiaomi.infra.galaxy.talos.mapreduce.input;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.WritableUtils;
import org.apache.hadoop.mapreduce.InputSplit;

public class TalosTopicInputSplit extends InputSplit implements Writable {
  private String topicResrouceName;
  private int parititonId;
  private long startMessageOffset;
  private long endMessageOffset;

  public TalosTopicInputSplit() {
  }

  public TalosTopicInputSplit(String topicResrouceName, int parititonId,
      long startMessageOffset, long endMessageOffset) {
    this.topicResrouceName = topicResrouceName;
    this.parititonId = parititonId;
    this.startMessageOffset = startMessageOffset;
    this.endMessageOffset = endMessageOffset;

    System.out.println("Split: " + toString());
  }

  @Override
  public long getLength() throws IOException, InterruptedException {
    return endMessageOffset - startMessageOffset;
  }

  @Override
  public String[] getLocations() throws IOException, InterruptedException {
    return new String[0];
  }

  public String getTopicResrouceName() {
    return topicResrouceName;
  }

  public int getParititonId() {
    return parititonId;
  }

  public long getStartMessageOffset() {
    return startMessageOffset;
  }

  public long getEndMessageOffset() {
    return endMessageOffset;
  }

  @Override
  public void write(DataOutput dataOutput) throws IOException {
    WritableUtils.writeCompressedString(dataOutput, topicResrouceName);
    WritableUtils.writeVInt(dataOutput, parititonId);
    WritableUtils.writeVLong(dataOutput, startMessageOffset);
    WritableUtils.writeVLong(dataOutput, endMessageOffset);
  }

  @Override
  public void readFields(DataInput dataInput) throws IOException {
    topicResrouceName = WritableUtils.readCompressedString(dataInput);
    parititonId = WritableUtils.readVInt(dataInput);
    startMessageOffset = WritableUtils.readVLong(dataInput);
    endMessageOffset = WritableUtils.readVLong(dataInput);
  }

  @Override
  public String toString() {
    return "TalosTopicInputSplit{" +
        "topicResrouceName='" + topicResrouceName + '\'' +
        ", parititonId=" + parititonId +
        ", startMessageOffset=" + startMessageOffset +
        ", endMessageOffset=" + endMessageOffset +
        '}';
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy