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
- Verify the catalog type string; it must equal a registered implementation's type() (case-insensitive).
- Ensure the JAR providing the CatalogRegistrar/Catalog implementation is on the classpath.
- 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)