@Override
  public void initialize(Configuration configuration, Properties tableProperties, Properties partitionProperties)
      throws SerDeException {
    super.initialize(configuration, tableProperties, partitionProperties);

    LazySerDeParameters serdeParams = new LazySerDeParameters(configuration, properties, getClass().getName());

    columnNames = serdeParams.getColumnNames();
    columnTypes = serdeParams.getColumnTypes();

    cachedObjectInspector = LazyBinaryFactory.createColumnarStructInspector(
        columnNames, columnTypes);
    int size = columnTypes.size();
    List<Integer> notSkipIDs = new ArrayList<Integer>();
    if (!this.configuration.isPresent() || ColumnProjectionUtils.isReadAllColumns(this.configuration.get())) {
      for (int i = 0; i < size; i++) {
        notSkipIDs.add(i);
      }
    } else {
      notSkipIDs = ColumnProjectionUtils.getReadColumnIDs(this.configuration.get());
    }
    cachedLazyStruct = new LazyBinaryColumnarStruct(cachedObjectInspector, notSkipIDs);

    super.initialize(size);
  }
LazyBinaryColumnarSerDe. This serde combines elements of columnar serde and lazybinary serde
to produce a serde which serializes columns into a BytesRefArrayWritable in a compact binary
format and which is deserialized in a lazy, i.e. on-demand fashion.
serde/src/java/org/apache/hadoop/hive/serde2/columnar/LazyBinaryColumnarSerDe.java