@Override
  public final void initialize(String name, CaseInsensitiveStringMap options) {
    this.catalogName = name;
    Map<String, String> properties = Maps.newHashMap(options);
    if (tableMetaStore == null) {
      String catalogUrl = options.get("url");
      if (StringUtils.isBlank(catalogUrl)) {
        catalogUrl = options.get("uri");
      }
      if (catalogUrl != null) {
        catalog = CatalogLoader.load(catalogUrl, properties);
      } else {
        Configuration localConfiguration =
            SparkUtil.hadoopConfCatalogOverrides(SparkSession.active(), name);
        tableMetaStore = TableMetaStore.builder().withConfiguration(localConfiguration).build();
      }
    }
    if (catalog == null) {
      String metastoreType = options.get(ICEBERG_CATALOG_TYPE);
      String registerName = options.get(CATALOG_REGISTER_NAME);
      Preconditions.checkArgument(
          StringUtils.isNotEmpty(metastoreType),
          "Lack required property: type when initializing mixed spark catalog");
      Preconditions.checkNotNull(
          tableMetaStore, "Lack authentication context when initializing mixed spark catalog");
      catalog =
          CatalogLoader.createCatalog(
              registerName == null ? catalogName : registerName,
              metastoreType,
              properties,
              tableMetaStore);
    }
    this.options = options;
  }
Base class of mixed-format spark catalog.
amoro-format-mixed/amoro-mixed-spark/amoro-mixed-spark-3-common/src/main/java/org/apache/amoro/spark/mixed/MixedSparkCatalogBase.java