@Override public List<ColumnSchema> getSchema(TableBlockInfo tableBlockInfo) throws IOException { FileReader fileReader = null; List<ColumnSchema> columnSchemaList = new ArrayList<ColumnSchema>(); try { long completeBlockLength = tableBlockInfo.getBlockLength(); long footerPointer = completeBlockLength - 8; fileReader = FileFactory.getFileHolder(FileFactory.getFileType(tableBlockInfo.getFilePath())); long actualFooterOffset = fileReader.readLong(tableBlockInfo.getFilePath(), footerPointer); CarbonFooterReader reader = new CarbonFooterReader(tableBlockInfo.getFilePath(), actualFooterOffset); FileFooter footer = reader.readFooter(); List<org.apache.carbondata.format.ColumnSchema> table_columns = footer.getTable_columns(); for (int i = 0; i < table_columns.size(); i++) { columnSchemaList.add(thriftColumnSchemaToWrapperColumnSchema(table_columns.get(i))); } } finally { if (null != fileReader) { fileReader.finish(); } } return columnSchemaList; } }
/** * The method calculate the B-Tree metadata size. * * @param tableBlockInfo * @return */ public static long calculateMetaSize(TableBlockInfo tableBlockInfo) throws IOException { FileReader fileReader = null; try { long completeBlockLength = tableBlockInfo.getBlockLength(); long footerPointer = completeBlockLength - 8; String filePath = tableBlockInfo.getFilePath(); fileReader = FileFactory.getFileHolder(FileFactory.getFileType(filePath)); long actualFooterOffset = fileReader.readLong(filePath, footerPointer); return footerPointer - actualFooterOffset; } finally { if (null != fileReader) { try { fileReader.finish(); } catch (IOException e) { // ignore the exception as nothing we can do about it fileReader = null; } } } }
long footerPointer = completeBlockLength - 8; fileReader = FileFactory.getFileHolder(FileFactory.getFileType(tableBlockInfo.getFilePath())); long actualFooterOffset = fileReader.readLong(tableBlockInfo.getFilePath(), footerPointer); CarbonFooterReader reader = new CarbonFooterReader(tableBlockInfo.getFilePath(), actualFooterOffset);