org.apache.hadoop.hive.ql.io.orc.Reader Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.hive.ql.io.orc;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.ql.io.sarg.SearchArgument;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
/**
* The interface for reading ORC files.
*
* One Reader can support multiple concurrent RecordReader.
*/
public interface Reader extends org.apache.orc.Reader {
/**
* Get the object inspector for looking at the objects.
* @return an object inspector for each row returned
*/
ObjectInspector getObjectInspector();
/**
* Get the Compression kind in the compatibility mode.
*/
CompressionKind getCompression();
/**
* Create a RecordReader that reads everything with the default options.
* @return a new RecordReader
* @throws IOException
*/
RecordReader rows() throws IOException;
/**
* Create a RecordReader that reads everything with the given options.
* @param options the options to use
* @return a new RecordReader
* @throws IOException
*/
RecordReader rowsOptions(Options options) throws IOException;
/**
* Create a RecordReader that reads everything with the given options.
* @param options the options to use
* @param conf conf object
* @return a new RecordReader
* @throws IOException
*/
RecordReader rowsOptions(Options options, Configuration conf) throws IOException;
/**
* Create a RecordReader that will scan the entire file.
* This is a legacy method and rowsOptions is preferred.
* @param include true for each column that should be included
* @return A new RecordReader
* @throws IOException
*/
RecordReader rows(boolean[] include) throws IOException;
/**
* Create a RecordReader that will start reading at the first stripe after
* offset up to the stripe that starts at offset + length. This is intended
* to work with MapReduce's FileInputFormat where divisions are picked
* blindly, but they must cover all of the rows.
* This is a legacy method and rowsOptions is preferred.
* @param offset a byte offset in the file
* @param length a number of bytes in the file
* @param include true for each column that should be included
* @return a new RecordReader that will read the specified rows.
* @throws IOException
*/
RecordReader rows(long offset, long length,
boolean[] include) throws IOException;
/**
* Create a RecordReader that will read a section of a file. It starts reading
* at the first stripe after the offset and continues to the stripe that
* starts at offset + length. It also accepts a list of columns to read and a
* search argument.
* This is a legacy method and rowsOptions is preferred.
* @param offset the minimum offset of the first stripe to read
* @param length the distance from offset of the first address to stop reading
* at
* @param include true for each column that should be included
* @param sarg a search argument that limits the rows that should be read.
* @param neededColumns the names of the included columns
* @return the record reader for the rows
*/
RecordReader rows(long offset, long length,
boolean[] include, SearchArgument sarg,
String[] neededColumns) throws IOException;
}