/**
         * 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);
        }
Ejemplo n.º 2
0
            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;
                }
            }