public ByteBuffer encode(Object[] values) { if (buf == null) { setBufferSize(DEFAULT_BUFFER_SIZE); } assert values.length == codec.getMeasuresCount(); while (true) { try { buf.clear(); for (int i = 0, pos = 0; i < codec.getMeasuresCount(); i++) { codec.encode(i, values[i], buf); measureSizes[i] = buf.position() - pos; pos = buf.position(); } return buf; } catch (BufferOverflowException boe) { if (buf.capacity() >= MAX_BUFFER_SIZE) throw boe; setBufferSize(buf.capacity() * 2); } } } }
public KeyValue create(Text key, Object[] measureValues) { for (int i = 0; i < colValues.length; i++) { colValues[i] = measureValues[refIndex[i]]; } valueBuf.clear(); codec.encode(colValues, valueBuf); return create(key, valueBuf.array(), 0, valueBuf.position()); }
private void buildValue(SplittedBytes[] splitBuffers) { for (int i = 0; i < measures.length; i++) { measures[i] = buildValueOf(i, splitBuffers); } valueBuf.clear(); measureCodec.encode(measures, valueBuf); }
@Override public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException { aggs.reset(); for (Text value : values) { codec.decode(ByteBuffer.wrap(value.getBytes(), 0, value.getLength()), input); if (cuboidLevel > 0) { aggs.aggregate(input, needAggr); } else { aggs.aggregate(input); } } aggs.collectStates(result); valueBuf.clear(); codec.encode(result, valueBuf); outputValue.set(valueBuf.array(), 0, valueBuf.position()); context.write(key, outputValue); counter++; if (counter % BatchConstants.COUNTER_MAX == 0) { logger.info("Handled " + counter + " records!"); } }
public ByteBuffer encode(Object[] values) { if (buf == null) { setBufferSize(DEFAULT_BUFFER_SIZE); } assert values.length == codec.getMeasuresCount(); while (true) { try { buf.clear(); for (int i = 0, pos = 0; i < codec.getMeasuresCount(); i++) { codec.encode(i, values[i], buf); measureSizes[i] = buf.position() - pos; pos = buf.position(); } return buf; } catch (BufferOverflowException boe) { if (buf.capacity() >= MAX_BUFFER_SIZE) throw boe; setBufferSize(buf.capacity() * 2); } } } }
codec.encode(measureObjs, valueBuf); outputValue.set(valueBuf.array(), 0, valueBuf.position()); value = outputValue;