@Setup public void setup() throws Exception { File dir = new File(dirPath); File compFile = new File(dir, file + "-" + strategy); bufferHandler = FileUtils.map(compFile); ByteBuffer buffer = bufferHandler.get(); supplier = CompressedColumnarFloatsSupplier.fromByteBuffer(buffer, ByteOrder.nativeOrder()); }
@Override public Deserializer getDeserializer() { return (buffer, builder, columnConfig) -> { int offset = buffer.getInt(); int initialPos = buffer.position(); final CompressedColumnarFloatsSupplier column = CompressedColumnarFloatsSupplier.fromByteBuffer( buffer, byteOrder ); buffer.position(initialPos + offset); final ImmutableBitmap bitmap; if (buffer.hasRemaining()) { bitmap = bitmapSerdeFactory.getObjectStrategy().fromByteBufferWithSize(buffer); } else { bitmap = bitmapSerdeFactory.getBitmapFactory().makeEmptyImmutableBitmap(); } builder.setType(ValueType.FLOAT) .setHasMultipleValues(false) .setNumericColumnSupplier(new FloatNumericColumnSupplier(column, bitmap)); }; } }
private void testSupplierSerde(CompressedColumnarFloatsSupplier supplier, float[] vals) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); supplier.writeTo(Channels.newChannel(baos), null); final byte[] bytes = baos.toByteArray(); Assert.assertEquals(supplier.getSerializedSize(), bytes.length); CompressedColumnarFloatsSupplier anotherSupplier = CompressedColumnarFloatsSupplier.fromByteBuffer( ByteBuffer.wrap(bytes), order ); ColumnarFloats indexed = anotherSupplier.get(); assertIndexMatchesVals(indexed, vals); }
@Override public void read(ByteBuffer buffer, ColumnBuilder builder, ColumnConfig columnConfig) { final CompressedColumnarFloatsSupplier column = CompressedColumnarFloatsSupplier.fromByteBuffer( buffer, byteOrder ); FloatNumericColumnSupplier columnSupplier = new FloatNumericColumnSupplier( column, IndexIO.LEGACY_FACTORY.getBitmapFactory().makeEmptyImmutableBitmap() ); builder.setType(ValueType.FLOAT) .setHasMultipleValues(false) .setNumericColumnSupplier(columnSupplier); } };
public static MetricHolder fromByteBuffer(ByteBuffer buf) { final byte ver = buf.get(); if (version[0] != ver) { throw new ISE("Unknown version[%s] of MetricHolder", ver); } final String metricName = serializerUtils.readString(buf); final String typeName = serializerUtils.readString(buf); MetricHolder holder = new MetricHolder(metricName, typeName); switch (holder.type) { case FLOAT: holder.floatType = CompressedColumnarFloatsSupplier.fromByteBuffer(buf, ByteOrder.nativeOrder()); break; case COMPLEX: final ComplexMetricSerde serdeForType = ComplexMetrics.getSerdeForType(holder.getTypeName()); if (serdeForType == null) { throw new ISE("Unknown type[%s], cannot load.", holder.getTypeName()); } holder.complexType = read(buf, serdeForType); break; case LONG: case DOUBLE: throw new ISE("Unsupported type[%s]", holder.type); } return holder; }
Assert.assertEquals(baos.size(), serializer.getSerializedSize()); CompressedColumnarFloatsSupplier supplier = CompressedColumnarFloatsSupplier .fromByteBuffer(ByteBuffer.wrap(baos.toByteArray()), order); ColumnarFloats floats = supplier.get();
@Override public Deserializer getDeserializer() { return (buffer, builder, columnConfig) -> { int offset = buffer.getInt(); int initialPos = buffer.position(); final CompressedColumnarFloatsSupplier column = CompressedColumnarFloatsSupplier.fromByteBuffer( buffer, byteOrder ); buffer.position(initialPos + offset); final ImmutableBitmap bitmap; if (buffer.hasRemaining()) { bitmap = bitmapSerdeFactory.getObjectStrategy().fromByteBufferWithSize(buffer); } else { bitmap = bitmapSerdeFactory.getBitmapFactory().makeEmptyImmutableBitmap(); } builder.setType(ValueType.FLOAT) .setHasMultipleValues(false) .setNumericColumnSupplier(new FloatNumericColumnSupplier(column, bitmap)); }; } }
@Override public void read(ByteBuffer buffer, ColumnBuilder builder, ColumnConfig columnConfig) { final CompressedColumnarFloatsSupplier column = CompressedColumnarFloatsSupplier.fromByteBuffer( buffer, byteOrder ); FloatNumericColumnSupplier columnSupplier = new FloatNumericColumnSupplier( column, IndexIO.LEGACY_FACTORY.getBitmapFactory().makeEmptyImmutableBitmap() ); builder.setType(ValueType.FLOAT) .setHasMultipleValues(false) .setNumericColumnSupplier(columnSupplier); } };
public static MetricHolder fromByteBuffer(ByteBuffer buf) { final byte ver = buf.get(); if (version[0] != ver) { throw new ISE("Unknown version[%s] of MetricHolder", ver); } final String metricName = serializerUtils.readString(buf); final String typeName = serializerUtils.readString(buf); MetricHolder holder = new MetricHolder(metricName, typeName); switch (holder.type) { case FLOAT: holder.floatType = CompressedColumnarFloatsSupplier.fromByteBuffer(buf, ByteOrder.nativeOrder()); break; case COMPLEX: final ComplexMetricSerde serdeForType = ComplexMetrics.getSerdeForType(holder.getTypeName()); if (serdeForType == null) { throw new ISE("Unknown type[%s], cannot load.", holder.getTypeName()); } holder.complexType = read(buf, serdeForType); break; case LONG: case DOUBLE: throw new ISE("Unsupported type[%s]", holder.type); } return holder; }