public String fileName(TaskWriterKey key) {
    return fileFormat.addExtension(
        String.format(
            FORMAT,
            key.getTreeNode().getId(),
            key.getFileType().shortName(),
            transactionId,
            partitionId,
            taskId,
            operationId,
            fileCount.incrementAndGet()));
  }
File name
pattern:${tree_node_id}-${file_type}-${transaction_id}-${partition_id}-${task_id}-{operation_id}-{count}

<ul>
  <li>tree_node_id: id of {@link DataTreeNode} the file belong
  <li>file_type: short name of file's {@link DataFileType}
  <li>transaction_id: id of transaction the file added
  <li>partition_id: id of partitioned data in parallel engine like spark & flink
  <li>task_id: id of write task within partition
  <li>operation_id: a random id to avoid duplicated file name
  <li>count: auto increment count within writer
</ul>

<p>like:

<ul>
  <li>1-B-100-0-0-4217271085623029157-0.parquet
  <li>4-ED-101-0-0-9009257362994691056-1.parquet
  <li>4-I-101-0-0-9009257362994691056-2.parquet
</ul>
amoro-format-iceberg/src/main/java/org/apache/amoro/data/FileNameRules.java