maxEval.init( Mode.PARTIAL1, new ObjectInspector[] { keyOI, valOI} );
MapAggBuffer buffer = (MapAggBuffer) maxEval.getNewAggregationBuffer();
Text key = new Text();
IntWritable val = new IntWritable();
for(int i=100; i>=0; i--) {
key.set(" Key # " + i);
val.set( i);
buffer.addValue(key, val);
}
Map<Text,IntWritable> valueMap = (Map<Text,IntWritable>)buffer.getValueMap();
int firstValue= 0;
for(Map.Entry<Text,IntWritable> entry : valueMap.entrySet()) {
System.out.println(" key is " + entry.getKey() );
System.out.println(" val is " + entry.getValue() );
Assert.assertTrue( entry.getValue().get() == firstValue );
firstValue++;
}
Assert.assertEquals( CollectMaxUDAF.DEFAULT_MAX_VALUES , valueMap.size() );
buffer.reset();
for(int i=0; i<100; i++) {
key.set(" Key # " + i);
val.set( i);
buffer.addValue(key, val);
}
valueMap = (Map<Text,IntWritable>)buffer.getValueMap();
firstValue= 0;
for(Map.Entry<Text,IntWritable> entry : valueMap.entrySet()) {
System.out.println(" key is " + entry.getKey() );
System.out.println(" val is " + entry.getValue() );
Assert.assertTrue( entry.getValue().get() == firstValue );
firstValue++;
}
Assert.assertEquals( CollectMaxUDAF.DEFAULT_MAX_VALUES , valueMap.size() );
buffer.reset();
for(int i=0; i<1000; i++) {
int rand = (int) (Math.random()*10000.00);
key.set(" Key # " + i);
val.set( rand);
buffer.addValue(key, val);
}
int lastValue= Integer.MIN_VALUE;
valueMap = (Map<Text,IntWritable>)buffer.getValueMap();
for(Map.Entry<Text,IntWritable> entry : valueMap.entrySet()) {
System.out.println(" key is " + entry.getKey() );
System.out.println(" val is " + entry.getValue() );
Assert.assertTrue( entry.getValue().get() >= lastValue );
}