/** * Method will be used to get the file footer converter instance based on version * * @param version * @return footer reader instance */ public AbstractDataFileFooterConverter getDataFileFooterConverter( final ColumnarFormatVersion version) { switch (version) { case V1: return new DataFileFooterConverter(); case V2: return new DataFileFooterConverter2(); case V3: default: return new DataFileFooterConverterV3(); } }
dataFileFooter.setVersionId(ColumnarFormatVersion.valueOf((short) fileHeader.getVersion())); dataFileFooter.setNumberOfRows(footer.getNum_rows()); dataFileFooter.setSegmentInfo(getSegmentInfo(footer.getSegment_info())); dataFileFooter.setSchemaUpdatedTimeStamp(fileHeader.getTime_stamp()); List<ColumnSchema> columnSchemaList = new ArrayList<ColumnSchema>(); List<org.apache.carbondata.format.ColumnSchema> table_columns = fileHeader.getColumn_schema(); for (int i = 0; i < table_columns.size(); i++) { columnSchemaList.add(thriftColumnSchemaToWrapperColumnSchema(table_columns.get(i))); List<BlockletIndex> blockletIndexList = new ArrayList<BlockletIndex>(); for (int i = 0; i < leaf_node_indices_Thrift.size(); i++) { BlockletIndex blockletIndex = getBlockletIndex(leaf_node_indices_Thrift.get(i)); blockletIndexList.add(blockletIndex); List<BlockletInfo> blockletInfoList = new ArrayList<BlockletInfo>(); for (int i = 0; i < leaf_node_infos_Thrift.size(); i++) { BlockletInfo blockletInfo = getBlockletInfo(leaf_node_infos_Thrift.get(i), CarbonUtil.getNumberOfDimensionColumns(columnSchemaList)); blockletInfo.setBlockletIndex(blockletIndexList.get(i)); dataFileFooter.setBlockletIndex(getBlockletIndexForDataFileFooter(blockletIndexList)); return dataFileFooter;
long currentPosition) { int i = 0; DataFileFooterConverterV3 converterV3 = new DataFileFooterConverterV3(); for (org.apache.carbondata.format.BlockletIndex index : blockletIndex) { BlockletInfo3 blockletInfo3 = blockletMetadata.get(i); BlockletInfo blockletInfo = converterV3.getBlockletInfo(blockletInfo3, model.getSegmentProperties().getDimensions().size()); BlockletBTreeIndex bTreeIndex = new BlockletBTreeIndex(index.b_tree_index.getStart_key(),
@Override public List<ColumnSchema> getSchema(TableBlockInfo tableBlockInfo) throws IOException { CarbonHeaderReader carbonHeaderReader = new CarbonHeaderReader(tableBlockInfo.getFilePath()); FileHeader fileHeader = carbonHeaderReader.readHeader(); List<ColumnSchema> columnSchemaList = new ArrayList<ColumnSchema>(); List<org.apache.carbondata.format.ColumnSchema> table_columns = fileHeader.getColumn_schema(); for (int i = 0; i < table_columns.size(); i++) { columnSchemaList.add(thriftColumnSchemaToWrapperColumnSchema(table_columns.get(i))); } return columnSchemaList; }
/** * Below method will be used to convert thrift file meta to wrapper file meta * This method will read the footer from footer offset present in the data file * 1. It will read the header from carbon data file, header starts from 0 offset * 2. It will set the stream offset * 3. It will read the footer data from file * 4. parse the footer to thrift object * 5. convert to wrapper object * * @param tableBlockInfo * table block info * @return data file footer */ @Override public DataFileFooter readDataFileFooter(TableBlockInfo tableBlockInfo) throws IOException { CarbonHeaderReader carbonHeaderReader = new CarbonHeaderReader(tableBlockInfo.getFilePath()); FileHeader fileHeader = carbonHeaderReader.readHeader(); CarbonFooterReaderV3 reader = new CarbonFooterReaderV3(tableBlockInfo.getFilePath(), tableBlockInfo.getBlockOffset()); FileFooter3 footer = reader.readFooterVersion3(); return convertDataFileFooter(fileHeader, footer); }
BlockletInfo blockletInfo = new DataFileFooterConverterV3(configuration) .getBlockletInfo(readBlockIndexInfo.getBlocklet_info(), CarbonUtil.getNumberOfDimensionColumns(columnSchemaList)); blockletInfo.setBlockletIndex(blockletIndex);