public long[] serializePartitionIndex() {
    int prefixParams = 3;
    long[] shuffleSplitRelation = new long[partitionIndexSubtaskMap.size() * 2 + prefixParams];
    shuffleSplitRelation[0] = totalParallelism;
    shuffleSplitRelation[1] = totalSplitNum;
    shuffleSplitRelation[2] = currentMaskOfTreeNode == null ? -1 : currentMaskOfTreeNode;

    int i = prefixParams;
    for (Map.Entry<Long, Integer> entry : partitionIndexSubtaskMap.entrySet()) {
      shuffleSplitRelation[i++] = entry.getKey();
      shuffleSplitRelation[i++] = entry.getValue();
    }
    return shuffleSplitRelation;
  }
Key is subtaskId, Value is the queue of unAssigned mixed-format splits.
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/read/hybrid/assigner/ShuffleSplitAssigner.java