@Override
  public Map<Integer, Set<DataTreeNode>> getSubtaskTreeNodes() {
    if (this.subtaskTreeNodes == null) {
      this.subtaskTreeNodes = initSubtaskFactorMap(this.downStreamOperatorParallelism);
      return this.subtaskTreeNodes;
    }
    return this.subtaskTreeNodes;
  }
After the primary key value hash is modulated based on concurrency, the row is routed to
different subtask write

<p>
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/shuffle/RoundRobinShuffleRulePolicy.java