apache/beam · error · UnsupportedOperationException

Could not find type ' ' for catalog ' '.

Error message

Could not find type '%s' for catalog '%s'.

What it means

findAndCreateCatalog throws this guard when no CatalogRegistrar on the classpath provides a Catalog whose type() matches the requested type string — i.e. CREATE CATALOG named an unknown or unregistered catalog type.

Solutions

  1. Verify the catalog type string; it must equal a registered implementation's type() (case-insensitive).
  2. Ensure the JAR providing the CatalogRegistrar/Catalog implementation is on the classpath.
  3. List supported catalog types in the docs or registry before issuing CREATE CATALOG.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/catalog/InMemoryCatalogManager.java:116 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/399b31478a532f6f. Report an issue: GitHub.

Appendix: source

Thrown at sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/catalog/InMemoryCatalogManager.java:116

        ServiceLoader.load(CatalogRegistrar.class, getClass().getClassLoader())) {
      for (Class<? extends Catalog> catalogClass : catalogRegistrar.getCatalogs()) {
        Catalog catalog = createCatalogInstance(catalogClass, name, properties);
        if (catalog.type().equalsIgnoreCase(type)) {
          list.add(catalog);
        }
      }
    }

    List<Catalog> foundCatalogs = list.build();

    if (foundCatalogs.size() > 1) {
      throw new IllegalStateException(
          String.format(
              "Could not create catalog '%s': "
                  + "expected only one implementation for type '%s' but found %s",
              name, type, foundCatalogs.size()));
    } else if (foundCatalogs.isEmpty()) {
      throw new UnsupportedOperationException(
          String.format("Could not find type '%s' for catalog '%s'.", type, name));
    }

    return foundCatalogs.get(0);
  }

  private Catalog createCatalogInstance(
      Class<? extends Catalog> catalogClass, String name, Map<String, String> properties) {
    try {
      return catalogClass.getConstructor(String.class, Map.class).newInstance(name, properties);
    } catch (ReflectiveOperationException e) {
      throw new RuntimeException(
          String.format("Encountered an error when constructing Catalog '%s'", name), e);
    }
  }

  @Override
  public Collection<Catalog> catalogs() {

View on GitHub (pinned to 12126d8942)