Class NestedPositionUtil
- java.lang.Object
-
- org.apache.flink.formats.parquet.utils.NestedPositionUtil
-
public class NestedPositionUtil extends Object
Utils to calculate nested type position.
-
-
Constructor Summary
Constructors Constructor Description NestedPositionUtil()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static CollectionPosition
calculateCollectionOffsets(ParquetField field, int[] definitionLevels, int[] repetitionLevels)
Calculate the collection's offsets according to column's max repetition level, definition level, value's repetition level and definition level.static long[]
calculateLengthByOffsets(boolean[] collectionIsEmpty, long[] arrayOffsets)
static RowPosition
calculateRowOffsets(ParquetField field, int[] fieldDefinitionLevels, int[] fieldRepetitionLevels)
Calculate row offsets according to column's max repetition level, definition level, value's repetition level and definition level.static boolean
isOptionalFieldValueNull(int definitionLevel, int maxDefinitionLevel)
-
-
-
Method Detail
-
calculateRowOffsets
public static RowPosition calculateRowOffsets(ParquetField field, int[] fieldDefinitionLevels, int[] fieldRepetitionLevels)
Calculate row offsets according to column's max repetition level, definition level, value's repetition level and definition level. Each row has three situation:- Row is not defined,because it's optional parent fields is null, this is decided by its parent's repetition level
- Row is null
- Row is defined and not empty.
- Parameters:
field
- field that contains the row column message include max repetition level and definition level.fieldRepetitionLevels
- int array with each value's repetition level.fieldDefinitionLevels
- int array with each value's definition level.- Returns:
RowPosition
contains collections row count and isNull array.
-
calculateCollectionOffsets
public static CollectionPosition calculateCollectionOffsets(ParquetField field, int[] definitionLevels, int[] repetitionLevels)
Calculate the collection's offsets according to column's max repetition level, definition level, value's repetition level and definition level. Each collection (Array or Map) has four situation:- Collection is not defined, because optional parent fields is null, this is decided by its parent's repetition level
- Collection is null
- Collection is defined but empty
- Collection is defined and not empty. In this case offset value is increased by the number of elements in that collection
- Parameters:
field
- field that contains array/map column message include max repetition level and definition level.definitionLevels
- int array with each value's repetition level.repetitionLevels
- int array with each value's definition level.- Returns:
CollectionPosition
contains collections offset array, length array and isNull array.
-
isOptionalFieldValueNull
public static boolean isOptionalFieldValueNull(int definitionLevel, int maxDefinitionLevel)
-
calculateLengthByOffsets
public static long[] calculateLengthByOffsets(boolean[] collectionIsEmpty, long[] arrayOffsets)
-
-