/** * Convert from the row include/sarg/columnNames to the event equivalent * for the underlying file. * @param options options for the row reader * @return a cloned options object that is modified for the event reader */ static Reader.Options createEventOptions(Reader.Options options) { Reader.Options result = options.clone(); result.range(options.getOffset(), Int64.MaxValue); // slide the columns down by 6 for the include array if (options.getInclude() != null) { bool[] orig = options.getInclude(); // we always need the base row orig[0] = true; bool[] include = new bool[orig.Length + OrcRecordUpdater.FIELDS]; Arrays.fill(include, 0, OrcRecordUpdater.FIELDS, true); for (int i = 0; i < orig.Length; ++i) { include[i + OrcRecordUpdater.FIELDS] = orig[i]; } result.include(include); } // slide the column names down by 6 for the name array if (options.getColumnNames() != null) { string[] orig = options.getColumnNames(); string[] cols = new string[orig.Length + OrcRecordUpdater.FIELDS]; for (int i = 0; i < orig.Length; ++i) { cols[i + OrcRecordUpdater.FIELDS] = orig[i]; } result.searchArgument(options.getSearchArgument(), cols); } return(result); }
VectorizedOrcRecordReader(Reader file, Configuration conf, FileSplit fileSplit) { List <OrcProto.Type> types = file.getTypes(); Reader.Options options = new Reader.Options(); this.offset = fileSplit.getStart(); this.length = fileSplit.getLength(); options.range(offset, length); options.include(OrcInputFormat.genIncludedColumns(types, conf, true)); OrcInputFormat.setSearchArgument(options, types, conf, true); this.reader = file.rowsOptions(options); try { rbCtx = new VectorizedRowBatchCtx(); rbCtx.init(conf, fileSplit); } catch (Exception e) { throw; } }