@Override
  protected DataWriterKey buildWriterKey(T row) {
    DataWriterKey key = super.buildWriterKey(row);
    ChangeAction action = action(row);
    switch (action) {
      case INSERT:
      case UPDATE_AFTER:
        return new DataWriterKey(
            key.getPartitionKey(), key.getTreeNode(), DataFileType.INSERT_FILE);
      case DELETE:
      case UPDATE_BEFORE:
        return new DataWriterKey(
            key.getPartitionKey(), key.getTreeNode(), DataFileType.EQ_DELETE_FILE);
      default:
        throw new IllegalArgumentException("Unknown action:" + action.name());
    }
  }
Abstract implementation of writer for {@link ChangeTable}.

@param <T> to indicate the record data type
amoro-format-iceberg/src/main/java/org/apache/amoro/io/writer/ChangeTaskWriter.java