apache/seatunnel · error · UnsupportedOperationException

Not implement

Error message

Not implement

What it means

HbaseCatalog.getTable is unimplemented: it unconditionally throws UnsupportedOperationException("Not implement"). Any code path that resolves a CatalogTable through this catalog will fail regardless of input.

Source

Thrown at seatunnel-connectors-v2/connector-hbase/src/main/java/org/apache/seatunnel/connectors/seatunnel/hbase/catalog/HbaseCatalog.java:119

        return hbaseClient.listTables(databaseName);
    }

    @Override
    public boolean tableExists(TablePath tablePath) throws CatalogException {
        checkNotNull(tablePath);
        String databaseName = tablePath.getDatabaseName();
        String tableName = tablePath.getTableName();
        String fullTableName =
                (databaseName == null || databaseName.isEmpty())
                        ? tableName
                        : databaseName + ":" + tableName;
        return hbaseClient.tableExists(fullTableName);
    }

    @Override
    public CatalogTable getTable(TablePath tablePath)
            throws CatalogException, TableNotExistException {
        throw new UnsupportedOperationException("Not implement");
    }

    @Override
    public void createTable(TablePath tablePath, CatalogTable table, boolean ignoreIfExists)
            throws TableAlreadyExistException, DatabaseNotExistException, CatalogException {
        checkNotNull(tablePath, "tablePath cannot be null");
        if (tableExists(tablePath)) {
            if (!ignoreIfExists) {
                throw new TableAlreadyExistException(catalogName, tablePath);
            }
            return;
        }
        hbaseClient.createTable(
                tablePath.getDatabaseName(),
                tablePath.getTableName(),
                hbaseParameters.getFamilyNames().values().stream()
                        .filter(value -> !"all_columns".equals(value))
                        .collect(Collectors.toList()),

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Avoid code paths that require getTable on the HBase catalog; define schema explicitly in the SeaTunnel job config (schema = { ... }).
  2. Wait for / upgrade to a connector version implementing getTable.
  3. Contribute or patch HbaseCatalog.getTable to build a CatalogTable from HBase table metadata.

Example fix

// before
CatalogTable table = catalog.getTable(TablePath.of("ns", "tbl"));
// after
// Define schema in job config instead of querying the catalog
source {
  Hbase {
    schema = { fields { id: string, cf:name: string } }
  }
}
Defensive patterns

Strategy: fallback

Validate before calling

// Avoid the call entirely; getTable is not supported by HbaseCatalog
boolean tableSchemaSupported = !(catalog instanceof HbaseCatalog);

Try / catch

try {
    return catalog.getTable(tablePath);
} catch (UnsupportedOperationException e) {
    LOG.warn("HbaseCatalog.getTable not implemented; using schema from job config");
    return schemaFromJobConfig(tablePath); // fallback path
}

Prevention

When it happens

Trigger: Calling HbaseCatalog.getTable(tablePath), e.g. during schema retrieval in catalog-based sink/source initialization or metadata APIs.

Common situations: Frameworks or tools that automatically call getTable to fetch schema; users expecting full catalog read support from the HBase connector; version where schema inference was never implemented.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/c50f032696656d86. Report an issue: GitHub.