Package sizzle.aggregators

Source Code of sizzle.aggregators.IntQuartileSizzleCombiner

package sizzle.aggregators;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mrunit.mapreduce.ReduceDriver;
import org.apache.hadoop.mrunit.types.Pair;
import org.junit.Assert;
import org.junit.Test;

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

public class TestIntQuantileAggregator {
  @Test
  public void testQuantileAggregatorCombine() throws IOException {
    final List<EmitValue> values = new ArrayList<EmitValue>();

    final BufferedReader r = new BufferedReader(new FileReader("test/normals"));
    try {
      String line = null;
      while ((line = r.readLine()) != null)
        values.add(new EmitValue(Long.parseLong(line)));
    } finally {
      r.close();
    }

    final ReduceDriver<EmitKey, EmitValue, EmitKey, EmitValue> reduceDriver = new ReduceDriver<EmitKey, EmitValue, EmitKey, EmitValue>(
        new IntQuartileSizzleCombiner());
    reduceDriver.setInput(new EmitKey("test"), values);
    final List<Pair<EmitKey, EmitValue>> output = reduceDriver.run();

    Assert.assertEquals("size is wrong", 575, output.size());

    Assert.assertEquals("outputs are wrong", new EmitKey("test"), output.get(14).getFirst());
    Assert.assertEquals("outputs are wrong", new EmitValue("-292", 1), output.get(14).getSecond());

    Assert.assertEquals("outputs are wrong", new EmitKey("test"), output.get(256).getFirst());
    Assert.assertEquals("outputs are wrong", new EmitValue("-32", 42), output.get(256).getSecond());
  }

  @Test
  public void testQuantileAggregator() {
    final List<EmitValue> values = new ArrayList<EmitValue>();
    values.add(new EmitValue(3));
    values.add(new EmitValue(6));
    values.add(new EmitValue(7));
    values.add(new EmitValue(8));
    values.add(new EmitValue(8));
    values.add(new EmitValue(10));
    values.add(new EmitValue(13));
    values.add(new EmitValue(15));
    values.add(new EmitValue(16));
    values.add(new EmitValue(20));

    final ReduceDriver<EmitKey, EmitValue, Text, NullWritable> reduceDriver = new ReduceDriver<EmitKey, EmitValue, Text, NullWritable>(
        new IntQuartileSizzleReducer());
    reduceDriver.setInput(new EmitKey("test"), values);
    reduceDriver.addOutput(new Text("test[] = [7, 8, 15, 20]"), NullWritable.get());
    reduceDriver.runTest();
  }

  @Test
  public void testQuantileAggregatorBig() throws IOException {
    final List<EmitValue> values = new ArrayList<EmitValue>();

    final BufferedReader r = new BufferedReader(new FileReader("test/normals"));
    try {
      String line = null;
      while ((line = r.readLine()) != null)
        values.add(new EmitValue(Long.parseLong(line)));
    } finally {
      r.close();
    }

    final ReduceDriver<EmitKey, EmitValue, Text, NullWritable> reduceDriver = new ReduceDriver<EmitKey, EmitValue, Text, NullWritable>(
        new IntQuartileSizzleReducer());
    reduceDriver.setInput(new EmitKey("test"), values);
    reduceDriver.addOutput(new Text("test[] = [-66, 1, 69, 356]"), NullWritable.get());
    reduceDriver.runTest();
  }
}

class IntQuartileSizzleCombiner extends sizzle.runtime.SizzleCombiner {
  public IntQuartileSizzleCombiner() {
    super();

    this.tables.put("test", new Table(new sizzle.aggregators.IntQuantileAggregator(5)));
  }
}

class IntQuartileSizzleReducer extends sizzle.runtime.SizzleReducer {
  public IntQuartileSizzleReducer() {
    super();

    this.tables.put("test", new Table(new sizzle.aggregators.IntQuantileAggregator(5)));
  }
}
TOP

Related Classes of sizzle.aggregators.IntQuartileSizzleCombiner

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.