Package sizzle.aggregators

Source Code of sizzle.aggregators.Aggregator

package sizzle.aggregators;

import java.io.IOException;

import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer.Context;

import sizzle.io.EmitKey;
import sizzle.io.EmitValue;

/**
* The base class for all Sizzle aggregators.
*
* @author anthonyu
*
*/
public abstract class Aggregator {
  private long arg;
  @SuppressWarnings("rawtypes")
  private Context context;
  private EmitKey key;
  private boolean combining;

  /**
   * Construct an Aggregator.
   *
   */
  public Aggregator() {
    // default constructor
  }

  /**
   * Construct an Aggregator.
   *
   * @param arg
   *            A long (Sizzle int) containing the argument to the table
   *
   */
  public Aggregator(final long arg) {
    this();

    this.arg = arg;
  }

  /**
   * Reset this aggregator for a new key.
   *
   * @param key
   *            The {@link EmitKey} to aggregate for
   *
   */
  public void start(final EmitKey key) {
    this.setKey(key);
  }

  public abstract void aggregate(String data, String metadata) throws IOException, InterruptedException, FinishedException;

  public void aggregate(final String data) throws IOException, InterruptedException, FinishedException {
    this.aggregate(data, null);
  }

  public void aggregate(final long data, final String metadata) throws IOException, InterruptedException, FinishedException {
    this.aggregate(Long.toString(data), metadata);
  }

  public void aggregate(final long data) throws IOException, InterruptedException, FinishedException {
    this.aggregate(data, null);
  }

  public void aggregate(final double data, final String metadata) throws IOException, InterruptedException, FinishedException {
    this.aggregate(Double.toString(data), metadata);
  }

  public void aggregate(final double data) throws IOException, InterruptedException, FinishedException {
    this.aggregate(data, null);
  }

  @SuppressWarnings("unchecked")
  protected void collect(final String data, final String metadata) throws IOException, InterruptedException {
    if (this.combining)
      this.getContext().write(this.getKey(), new EmitValue(data, metadata));
    else if (metadata != null)
      this.getContext().write(new Text(this.getKey() + " = " + data + " weight " + metadata), NullWritable.get());
    else
      this.getContext().write(new Text(this.getKey() + " = " + data), NullWritable.get());
  }

  protected void collect(final String data) throws IOException, InterruptedException {
    this.collect(data, null);
  }

  @SuppressWarnings("unchecked")
  protected void collect(final long data, final String metadata) throws IOException, InterruptedException {
    if (this.combining)
      this.getContext().write(this.getKey(), new EmitValue(data, metadata));
    else if (metadata != null)
      this.getContext().write(new Text(this.getKey() + " = " + data + " weight " + metadata), NullWritable.get());
    else
      this.getContext().write(new Text(this.getKey() + " = " + data), NullWritable.get());
  }

  protected void collect(final long data) throws IOException, InterruptedException {
    this.collect(data, null);
  }

  @SuppressWarnings("unchecked")
  protected void collect(final double data, final String metadata) throws IOException, InterruptedException {
    if (this.combining)
      this.getContext().write(this.getKey(), new EmitValue(data, metadata));
    else if (metadata != null)
      this.getContext().write(new Text(this.getKey() + " = " + data + " weight " + metadata), NullWritable.get());
    else
      this.getContext().write(new Text(this.getKey() + " = " + data), NullWritable.get());
  }

  protected void collect(final double data) throws IOException, InterruptedException {
    this.collect(data, null);
  }

  public void finish() throws IOException, InterruptedException {
    // do nothing by default
  }

  public long getArg() {
    return this.arg;
  }

  public void setContext(@SuppressWarnings("rawtypes") final Context context) {
    this.context = context;
  }

  public boolean isCombining() {
    return this.combining;
  }

  public void setCombining(final boolean combining) {
    this.combining = combining;
  }

  // these are checked at runtime by the combiner
  public boolean isAssociative() {
    return false;
  }

  public boolean isCommutative() {
    return false;
  }

  @SuppressWarnings("rawtypes")
  public Context getContext() {
    return this.context;
  }

  public void setKey(final EmitKey key) {
    this.key = key;
  }

  public EmitKey getKey() {
    return this.key;
  }

  public EmitValue getResult() {
    throw new RuntimeException("unimplemented");
  }
}
TOP

Related Classes of sizzle.aggregators.Aggregator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.