All Downloads are FREE. Search and download functionalities are using the official Maven repository.

parquet.column.ColumnReader Maven / Gradle / Ivy

There is a newer version: 1.6.0
Show newest version
/**
 * Copyright 2012 Twitter, Inc.
 *
 * Licensed 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 parquet.column;

import parquet.io.api.Binary;

/**
 * Reader for (repetition level, definition level, values) triplets.
 * At any given point in time, a ColumnReader points to a single (r, d, v) triplet.
 * In order to move to the next triplet, call {@link #consume()}.
 *
 * Depending on the type and the encoding of the column only a subset of the get* methods are implemented.
 * Dictionary specific methods enable the upper layers to read the dictionary IDs without decoding the data.
 * In particular the Converter will decode the strings in the dictionary only once and iterate on the
 * dictionary IDs instead of the values.
 *
 * 
    Each iteration looks at the current definition level and value as well as the next * repetition level: *
  • The current definition level defines if the value is null.
  • *
  • If the value is defined we can read it with the correct get*() method.
  • *
  • Looking ahead to the next repetition determines what is the next column to read for in the FSA.
  • *
* @author Julien Le Dem */ public interface ColumnReader { /** * @return the totalCount of values to be consumed */ long getTotalValueCount(); /** * Consume the current triplet, moving to the next value. */ void consume(); /** * must return 0 when isFullyConsumed() == true * @return the repetition level for the current value */ int getCurrentRepetitionLevel(); /** * @return the definition level for the current value */ int getCurrentDefinitionLevel(); /** * writes the current value to the converter */ void writeCurrentValueToConverter(); /** * Skip the current value */ void skip(); /** * available when the underlying encoding is dictionary based * @return the dictionary id for the current value */ int getCurrentValueDictionaryID(); /** * @return the current value */ int getInteger(); /** * @return the current value */ boolean getBoolean(); /** * @return the current value */ long getLong(); /** * @return the current value */ Binary getBinary(); /** * @return the current value */ float getFloat(); /** * @return the current value */ double getDouble(); /** * @return Descriptor of the column. */ ColumnDescriptor getDescriptor(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy