private void encodeValue(Block block, int position, SliceOutput output) { double value = type.getDouble(block, position); buffer.setLength(0); buffer.append(value); for (int index = 0; index < buffer.length(); index++) { output.writeByte(buffer.charAt(index)); } }
@Override public void encodeColumn(Block block, SliceOutput output, EncodeOutput encodeOutput) { for (int position = 0; position < block.getPositionCount(); position++) { if (block.isNull(position)) { output.writeBytes(nullSequence); } else { float value = Float.intBitsToFloat((int) type.getLong(block, position)); buffer.setLength(0); buffer.append(value); for (int index = 0; index < buffer.length(); index++) { output.writeByte(buffer.charAt(index)); } } encodeOutput.closeEntry(); } }
@Override public void encodeColumn(Block block, SliceOutput output, EncodeOutput encodeOutput) { for (int position = 0; position < block.getPositionCount(); position++) { if (block.isNull(position)) { output.writeBytes(nullSequence); } else { long value = type.getLong(block, position); buffer.setLength(0); buffer.append(value); for (int index = 0; index < buffer.length(); index++) { output.writeByte(buffer.charAt(index)); } } encodeOutput.closeEntry(); } }
@Override public BlockBuilder writeByte(int value) { if (!initialized) { initializeCapacity(); } sliceOutput.writeByte(value); currentEntrySize += SIZE_OF_BYTE; return this; }
@Override public void encodeValueInto(int depth, Block block, int position, SliceOutput output) throws RcFileCorruptionException { byte separator = getSeparator(depth); Block row = block.getObject(position, Block.class); for (int fieldIndex = 0; fieldIndex < structFields.size(); fieldIndex++) { if (fieldIndex > 0) { output.writeByte(separator); } if (row.isNull(fieldIndex)) { output.writeBytes(nullSequence); } else { structFields.get(fieldIndex).encodeValueInto(depth + 1, row, fieldIndex, output); } } }
@Override public void encodeValueInto(int depth, Block block, int position, SliceOutput output) { float value = Float.intBitsToFloat((int) type.getLong(block, position)); buffer.setLength(0); buffer.append(value); for (int index = 0; index < buffer.length(); index++) { output.writeByte(buffer.charAt(index)); } }
@Override public void encodeColumn(Block block, SliceOutput output, EncodeOutput encodeOutput) { for (int position = 0; position < block.getPositionCount(); position++) { if (!block.isNull(position)) { Slice slice = type.getSlice(block, position); if (slice.length() == 0) { output.writeByte(HIVE_EMPTY_STRING_BYTE); } else { output.writeBytes(slice); } } encodeOutput.closeEntry(); } }
@Override public void encodeValueInto(int depth, Block block, int position, SliceOutput output) { long value = type.getLong(block, position); buffer.setLength(0); buffer.append(value); for (int index = 0; index < buffer.length(); index++) { output.writeByte(buffer.charAt(index)); } }
@Override public void encodeValueInto(int depth, Block block, int position, SliceOutput output) throws RcFileCorruptionException { byte separator = getSeparator(depth); Block list = block.getObject(position, Block.class); for (int elementIndex = 0; elementIndex < list.getPositionCount(); elementIndex++) { if (elementIndex > 0) { output.writeByte(separator); } if (list.isNull(elementIndex)) { output.writeBytes(nullSequence); } else { elementEncoding.encodeValueInto(depth + 1, list, elementIndex, output); } } }
@Override public BlockBuilder writeByte(int value) { checkCapacity(); sliceOutput.writeByte(value); currentEntrySize += SIZE_OF_BYTE; return this; }
private static void writeFileHeader(SliceOutput output) { // write header output.writeBytes(RCFILE_MAGIC); output.writeByte(CURRENT_VERSION); // write codec information output.writeBoolean(false); // write metadata (which contains just the column count) output.writeInt(Integer.reverseBytes(1)); output.writeByte(COLUMN_COUNT_METADATA_KEY.length()); output.writeBytes(COLUMN_COUNT_METADATA_KEY); output.writeByte(1); output.writeByte('1'); // write sync sequence output.writeLong(syncFirst); output.writeLong(syncSecond); }
@Override public void encodeValueInto(Block block, int position, SliceOutput output) { output.writeByte((byte) type.getLong(block, position)); }
public static void writeSerializedPage(SliceOutput output, SerializedPage page) { output.writeInt(page.getPositionCount()); output.writeByte(page.getCompression().getMarker()); output.writeInt(page.getUncompressedSizeInBytes()); output.writeInt(page.getSizeInBytes()); output.writeBytes(page.getSlice()); }
private void encodeValue(Block block, int position, SliceOutput output) { long days = type.getLong(block, position); long millis = TimeUnit.DAYS.toMillis(days); buffer.setLength(0); HIVE_DATE_PARSER.printTo(buffer, millis); for (int index = 0; index < buffer.length(); index++) { output.writeByte(buffer.charAt(index)); } }
@Override public void encodeValueInto(int depth, Block block, int position, SliceOutput output) { long millis = type.getLong(block, position); buffer.setLength(0); dateTimeFormatter.printTo(buffer, millis); for (int index = 0; index < buffer.length(); index++) { output.writeByte(buffer.charAt(index)); } }
@Override public void encodeColumn(Block block, SliceOutput output, EncodeOutput encodeOutput) { for (int position = 0; position < block.getPositionCount(); position++) { if (!block.isNull(position)) { output.writeByte((byte) type.getLong(block, position)); } encodeOutput.closeEntry(); } }
private void writeLong(SliceOutput output, long value) { // first vint is scale writeVInt(output, type.getScale()); // second vint is length int length = getWriteByteCount(value); writeVInt(output, length); // write value (big endian) for (int i = length - 1; i >= 0; i--) { output.writeByte((int) (value >> (i * 8))); } }
@Override public void writeBlock(BlockEncodingSerde blockEncodingSerde, SliceOutput sliceOutput, Block block) { int positionCount = block.getPositionCount(); sliceOutput.appendInt(positionCount); encodeNullsAsBits(sliceOutput, block); for (int position = 0; position < positionCount; position++) { if (!block.isNull(position)) { sliceOutput.writeByte(block.getByte(position, 0)); } } }
private static void writePoint(Point point, SliceOutput output) { output.writeByte(GeometrySerializationType.POINT.code()); if (!point.isEmpty()) { writeCoordinate(point.getCoordinate(), output); } else { output.writeDouble(NaN); output.writeDouble(NaN); } }
private static void writeMultiPoint(MultiPoint geometry, SliceOutput output) { output.writeByte(GeometrySerializationType.MULTI_POINT.code()); output.writeInt(EsriShapeType.MULTI_POINT.code); writeEnvelope(geometry, output); output.writeInt(geometry.getNumPoints()); for (Coordinate coordinate : geometry.getCoordinates()) { writeCoordinate(coordinate, output); } }