private Map<String, InputSplit> transformSplitResult(SplitResult splitResult) {
    Map<String, InputSplit> splitMap = new LinkedHashMap<>();
    splitMap.put("schema-split", splitResult.schemaSplit);
    if (splitResult.actualSplits != null && splitResult.actualSplits.length > 0) {
      Preconditions.checkNotNull(splitResult.planSplit);
      splitMap.put("plan-split", splitResult.planSplit);
      for (int i = 0; i < splitResult.actualSplits.length; i++) {
        splitMap.put("" + i, splitResult.actualSplits[i]);
      }
    }
    return splitMap;
  }
GenericUDTFGetSplits2 -  Memory efficient version of GenericUDTFGetSplits.
It separates out information like schema and planBytes[] which is common to all the splits.
This produces output in following format.
<p>
type                           split
----------------------------------------------------
schema-split             LlapInputSplit -- contains only schema
plan-split               LlapInputSplit -- contains only planBytes[]
0                        LlapInputSplit -- actual split 1
1                        LlapInputSplit -- actual split 2
...                         ...
ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDTFGetSplits2.java