private static List<ColumnEncoding> toColumnEncoding(List<OrcType> types, List<DwrfProto.ColumnEncoding> columnEncodings) { Map<Integer, List<DwrfProto.ColumnEncoding>> groupedColumnEncodings = new HashMap<>(columnEncodings.size()); for (int i = 0; i < columnEncodings.size(); i++) { DwrfProto.ColumnEncoding columnEncoding = columnEncodings.get(i); int column = columnEncoding.getColumn(); // DWRF prior to version 6.0.8 doesn't set the value of column, infer it from the index if (!columnEncoding.hasColumn()) { column = i; } groupedColumnEncodings.computeIfAbsent(column, key -> new ArrayList<>()).add(columnEncoding); } ImmutableList.Builder<ColumnEncoding> resultBuilder = ImmutableList.builder(); for (Map.Entry<Integer, List<DwrfProto.ColumnEncoding>> entry : groupedColumnEncodings.entrySet()) { OrcType type = types.get(entry.getKey()); DwrfProto.ColumnEncoding columnEncoding = entry.getValue().get(0); resultBuilder.add( new ColumnEncoding( toColumnEncodingKind(type.getOrcTypeKind(), columnEncoding.getKind()), columnEncoding.getDictionarySize(), toAdditionalSequenceEncodings(entry.getValue(), type))); } return resultBuilder.build(); }
private static DwrfSequenceEncoding toSequenceEncoding(OrcType type, DwrfProto.ColumnEncoding columnEncoding) { return new DwrfSequenceEncoding( columnEncoding.getKey(), new ColumnEncoding( toColumnEncodingKind(type.getOrcTypeKind(), columnEncoding.getKind()), columnEncoding.getDictionarySize())); }
private static List<ColumnEncoding> toColumnEncoding(List<OrcType> types, List<DwrfProto.ColumnEncoding> columnEncodings) { Map<Integer, List<DwrfProto.ColumnEncoding>> groupedColumnEncodings = new HashMap<>(columnEncodings.size()); for (int i = 0; i < columnEncodings.size(); i++) { DwrfProto.ColumnEncoding columnEncoding = columnEncodings.get(i); int column = columnEncoding.getColumn(); // DWRF prior to version 6.0.8 doesn't set the value of column, infer it from the index if (!columnEncoding.hasColumn()) { column = i; } groupedColumnEncodings.computeIfAbsent(column, key -> new ArrayList<>()).add(columnEncoding); } ImmutableList.Builder<ColumnEncoding> resultBuilder = ImmutableList.builder(); for (Map.Entry<Integer, List<DwrfProto.ColumnEncoding>> entry : groupedColumnEncodings.entrySet()) { OrcType type = types.get(entry.getKey()); DwrfProto.ColumnEncoding columnEncoding = entry.getValue().get(0); resultBuilder.add( new ColumnEncoding( toColumnEncodingKind(type.getOrcTypeKind(), columnEncoding.getKind()), columnEncoding.getDictionarySize(), toAdditionalSequenceEncodings(entry.getValue(), type))); } return resultBuilder.build(); }
private static ColumnEncoding toColumnEncoding(OrcTypeKind type, OrcProto.ColumnEncoding columnEncoding) { return new ColumnEncoding(toColumnEncodingKind(type, columnEncoding.getKind()), columnEncoding.getDictionarySize()); }
private static DwrfSequenceEncoding toSequenceEncoding(OrcType type, DwrfProto.ColumnEncoding columnEncoding) { return new DwrfSequenceEncoding( columnEncoding.getKey(), new ColumnEncoding( toColumnEncodingKind(type.getOrcTypeKind(), columnEncoding.getKind()), columnEncoding.getDictionarySize())); }