public BlockletHeader deepCopy() { return new BlockletHeader(this); }
public Object getFieldValue(_Fields field) { switch (field) { case BLOCKLET_LENGTH: return getBlocklet_length(); case MUTATION: return getMutation(); case BLOCKLET_INDEX: return getBlocklet_index(); case BLOCKLET_INFO: return getBlocklet_info(); case DICTIONARY: return getDictionary(); } throw new IllegalStateException(); }
case BLOCKLET_LENGTH: if (value == null) { unsetBlocklet_length(); } else { setBlocklet_length((Integer)value); unsetMutation(); } else { setMutation((MutationType)value); unsetBlocklet_index(); } else { setBlocklet_index((BlockletIndex)value); unsetBlocklet_info(); } else { setBlocklet_info((BlockletInfo)value); unsetDictionary(); } else { setDictionary((org.apache.carbondata.format.ColumnDictionaryChunk)value);
void apppendBlocklet(DataOutputStream outputStream) throws IOException { outputStream.write(CarbonStreamOutputFormat.CARBON_SYNC_MARKER); BlockletInfo blockletInfo = new BlockletInfo(); blockletInfo.setNum_rows(getRowIndex() + 1); BlockletHeader blockletHeader = new BlockletHeader(); blockletHeader.setBlocklet_length(getCount()); blockletHeader.setMutation(MutationType.INSERT); blockletHeader.setBlocklet_info(blockletInfo); // add blocklet level min/max blockletMinMaxIndex = generateBlockletMinMax(); if (blockletInfo.getNum_rows() > 1) { BlockletIndex blockletIndex = new BlockletIndex(); blockletIndex.setMin_max_index(CarbonMetadataUtil.convertMinMaxIndex(blockletMinMaxIndex)); blockletHeader.setBlocklet_index(blockletIndex); } byte[] headerBytes = CarbonUtil.getByteArray(blockletHeader); outputStream.writeInt(headerBytes.length); outputStream.write(headerBytes); byte[] compressed = compressor.compressByte(getBytes(), getCount()); outputStream.writeInt(compressed.length); outputStream.write(compressed); }
public BlockletHeader readBlockletHeader() throws IOException { int len = readIntFromStream(); byte[] b = new byte[len]; if (!readBytesFromStream(b, 0, len)) { throw new EOFException("Failed to read blocklet header"); } BlockletHeader header = CarbonUtil.readBlockletHeader(b); rowNums = header.getBlocklet_info().getNum_rows(); rowIndex = 0; return header; }
public void readBlockletData(BlockletHeader header) throws IOException { ensureCapacity(header.getBlocklet_length()); offset = 0; int len = readIntFromStream(); byte[] b = new byte[len]; if (!readBytesFromStream(b, 0, len)) { throw new EOFException("Failed to read blocklet data"); } compressor.rawUncompress(b, buffer); }
private boolean isScanRequired(BlockletHeader header) { if (filter != null && header.getBlocklet_index() != null) { BlockletMinMaxIndex minMaxIndex = CarbonMetadataUtil.convertExternalMinMaxIndex( header.getBlocklet_index().getMin_max_index()); if (minMaxIndex != null) { BitSet bitSet = filter .isScanRequired(minMaxIndex.getMaxValues(), minMaxIndex.getMinValues(), minMaxIndex.getIsMinMaxSet()); if (bitSet.isEmpty()) { return false; } else { return true; } } } return true; }
@Override public boolean equals(Object that) { if (that == null) return false; if (that instanceof BlockletHeader) return this.equals((BlockletHeader)that); return false; }
private boolean scanBlockletAndFillVector(BlockletHeader header) throws IOException { int rowNums = header.getBlocklet_info().getNum_rows(); vectorProxy = new CarbonVectorProxy(MemoryMode.OFF_HEAP, outputSchema, rowNums, false); vectorProxy.setNumRows(rowNums);
@Override public TBase create() { return new BlockletHeader(); } }, 0, data.length);