@Override @SuppressWarnings("unchecked") public R result() { try { Class tupleClass = Tuple.getTupleClass(columnAggregators.length); R tuple = (R) tupleClass.newInstance(); for (int i = 0; i < columnAggregators.length; i++) { tuple.setField(columnAggregators[i].result(), i); } return tuple; } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException("Unexpected error instantiating Tuple class for aggregation results", e); } } }
@Override public Tuple getKey(IN value) { Tuple key = Tuple.newInstance(fields.length); for (int i = 0; i < fields.length; i++) { key.setField(Array.get(value, fields[i]), i); } return key; }
@Override public double[] extract(Tuple in) { double[] out = new double[indexes.length]; for (int i = 0; i < indexes.length; i++) { out[i] = (Double) in.getField(indexes[i]); } return out; } }
@Override public T createOrReuseInstance(Object[] fields, T reuse) { for (int i = 0; i < arity; i++) { reuse.setField(fields[i], i); } return reuse; }
@Override public void reduce(Iterable<T> records, Collector<T> out) { final AggregationFunction<Object>[] aggFunctions = this.aggFunctions; final int[] fieldPositions = this.fieldPositions; // aggregators are initialized from before T outT = null; for (T record : records) { outT = record; for (int i = 0; i < fieldPositions.length; i++) { Object val = record.getFieldNotNull(fieldPositions[i]); aggFunctions[i].aggregate(val); } } for (int i = 0; i < fieldPositions.length; i++) { Object aggVal = aggFunctions[i].getAggregate(); outT.setField(aggVal, fieldPositions[i]); aggFunctions[i].initializeAggregate(); } out.collect(outT); }
public static Tuple createTuple(int size) { try { return Tuple.getTupleClass(size).newInstance(); } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException(e); } } }
@Override protected int getFieldsNum(T record) { return record.getArity(); }
Comparable comparable1 = value1.getFieldNotNull(position); Comparable comparable2 = value2.getFieldNotNull(position);
@SuppressWarnings("unchecked") @Override public F get(T record) { return (F) record.getField(pos); }
@Override public T set(T record, F fieldValue) { record.setField(fieldValue, pos); return record; } }
@Override public void reduce(Iterable<T> records, Collector<T> out) { final AggregationFunction<Object>[] aggFunctions = this.aggFunctions; final int[] fieldPositions = this.fieldPositions; // aggregators are initialized from before T outT = null; for (T record : records) { outT = record; for (int i = 0; i < fieldPositions.length; i++) { Object val = record.getFieldNotNull(fieldPositions[i]); aggFunctions[i].aggregate(val); } } for (int i = 0; i < fieldPositions.length; i++) { Object aggVal = aggFunctions[i].getAggregate(); outT.setField(aggVal, fieldPositions[i]); aggFunctions[i].initializeAggregate(); } out.collect(outT); }
private MapProjector(int[] fields) { this.fields = fields; try { this.outTuple = Tuple.getTupleClass(fields.length).newInstance(); } catch (Exception e) { // this should never happen throw new RuntimeException(e); } }
@Override public Tuple getKey(IN value) { Tuple key = Tuple.newInstance(keyLength); comparator.extractKeys(value, keyArray, 0); for (int i = 0; i < keyLength; i++) { key.setField(keyArray[i], i); } return key; }
/** * Default constructor * * @param tuple wrapped {@link Tuple}. * @param keys key strings. */ public TupleMap(T tuple, String[] keys) { if (keys.length > tuple.getArity()) { throw new IllegalArgumentException("Number of keys is greater" + " than the arity of the tuple!"); } this.tuple = tuple; this.keys = keys; }
Comparable comparable1 = value1.getFieldNotNull(position); Comparable comparable2 = value2.getFieldNotNull(position);