apache/seatunnel · error · TableNotExistException
Table ${tablePath} does not exist in catalog ${catalogName}
Error message
Table ${tablePath} does not exist in catalog ${catalogName} What it means
Thrown by HudiCatalog.getTable() as a standard TableNotExistException when tableExists() returns false for the requested TablePath. This is the catalog's contract for reading a table schema that is not present under the configured parent path with valid Hudi metadata.
Source
Thrown at seatunnel-connectors-v2/connector-hudi/src/main/java/org/apache/seatunnel/connectors/seatunnel/hudi/catalog/HudiCatalog.java:182
public boolean tableExists(TablePath tablePath) throws CatalogException {
String basePath = inferTablePath(tableParentDfsPathStr, tablePath);
try {
return fs.exists(new Path(basePath, HoodieTableMetaClient.METAFOLDER_NAME))
&& fs.exists(
new Path(
new Path(basePath, HoodieTableMetaClient.METAFOLDER_NAME),
HoodieTableConfig.HOODIE_PROPERTIES_FILE));
} catch (IOException e) {
throw new CatalogException(
"Error while checking whether table exists under path:" + basePath, e);
}
}
@Override
public CatalogTable getTable(TablePath tablePath)
throws CatalogException, TableNotExistException {
if (!tableExists(tablePath)) {
throw new TableNotExistException(name(), tablePath);
}
HoodieTableMetaClient hoodieTableMetaClient =
HoodieTableMetaClient.builder()
.setBasePath(inferTablePath(tableParentDfsPathStr, tablePath))
.setConf(HadoopFSUtils.getStorageConfWithCopy(hadoopConf))
.build();
HoodieTableType tableType = hoodieTableMetaClient.getTableType();
HoodieTableConfig tableConfig = hoodieTableMetaClient.getTableConfig();
TableSchema tableSchema = convertSchema(TableSchema.builder(), tableConfig);
List<String> partitionFields = null;
if (tableConfig.getPartitionFields().isPresent()) {
partitionFields = Arrays.asList(tableConfig.getPartitionFields().get());
}
Map<String, String> options = new HashMap<>();
if (tableConfig.getRecordKeyFields().isPresent()) {
options.put(
RECORD_KEY_FIELDS.key(),View on GitHub (pinned to cf67b549a7)
Solutions
- Verify the exact database.table path exists and contains .hoodie/hoodie.properties on the filesystem.
- Create the table first with catalog.createTable() or point the config at the existing table.
- Align the catalog's table_parent_dfs_path with the real Hudi tables root.
- Check case/namespace differences (S3 keys are case-sensitive).
Example fix
// before
CatalogTable t = catalog.getTable(TablePath.of("mydb","orders")); // fails if missing
// after
if (catalog.tableExists(TablePath.of("mydb","orders"))) {
CatalogTable t = catalog.getTable(TablePath.of("mydb","orders"));
} else {
catalog.createTable(TablePath.of("mydb","orders"), schema, false);
} Defensive patterns
Strategy: validation
Validate before calling
// Java
if (!catalog.tableExists(TablePath.of(db, tbl))) {
throw new IllegalStateException("Table " + db + "." + tbl + " not found; check path/config");
} Try / catch
// Java
try {
CatalogTable t = catalog.getTable(tablePath);
} catch (TableNotExistException e) {
// create table or fail fast with a clear config-error message
} Prevention
- Always check tableExists before getTable in generic code.
- Double-check database.table names in SeaTunnel config files.
- Confirm .hoodie/hoodie.properties exists at the table location.
- Verify catalog table_parent_dfs_path matches the Hudi tables root.
When it happens
Trigger: Calling getTable(tablePath) (e.g., during job startup schema resolution) when <basePath>/.hoodie/hoodie.properties does not exist: table never created, wrong database/table name, or table written to a different root than table_parent_dfs_path.
Common situations: Typo in table name or database in the SeaTunnel config; Hudi table created by another tool at a different location; catalog's table_parent_dfs_path not pointing to the Hudi table root; case-sensitivity mismatch on object stores.
Understand the failure class
Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.
Related errors
- Database ${databaseName} does not exist in catalog ${catalog
- Database name is null or empty.
- Listing database exception.
- Hudi catalog not support truncate table.
- Database ${databaseName} already exists in catalog ${catalog
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/739276b2a1a5ff84.
Report an issue: GitHub.