private PrimaryKeyedFile findAnyFileInSplit(MixedFormatSplit mixedFormatSplit) {
    AtomicReference<PrimaryKeyedFile> file = new AtomicReference<>();
    if (mixedFormatSplit.isChangelogSplit()) {
      List<MixedFileScanTask> mixedFileScanTasks =
          new ArrayList<>(mixedFormatSplit.asChangelogSplit().insertTasks());
      mixedFileScanTasks.addAll(mixedFormatSplit.asChangelogSplit().deleteTasks());
      mixedFileScanTasks.stream().findFirst().ifPresent(task -> file.set(task.file()));
      if (file.get() != null) {
        return file.get();
      }
    }

    List<MixedFileScanTask> mixedFileScanTasks =
        new ArrayList<>(mixedFormatSplit.asSnapshotSplit().insertTasks());
    mixedFileScanTasks.stream().findFirst().ifPresent(task -> file.set(task.file()));
    if (file.get() != null) {
      return file.get();
    }
    throw new FlinkRuntimeException("Couldn't find a primaryKeyedFile.");
  }
In one mixed-format split, the partitions, mask and index of the files are the same.

@param mixedFormatSplit mixed-format source split
@return anyone primary keyed file in the mixed-format split.
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/read/hybrid/assigner/ShuffleSplitAssigner.java