apache/seatunnel · error · PaimonConnectorException

GET_FIELD_FAILED

GET_FIELD_FAILED

Error message

Can not get the field [${fieldName}] from source table

What it means

SchemaUtil.getDataField looks up a field by name in the Paimon table's DataField list and throws GET_FIELD_FAILED if no field matches. It signals that the expected column is absent from the source Paimon table schema.

Solutions

  1. Check the actual Paimon table schema (catalog schema) and use the exact field name
  2. Fix case sensitivity of the fieldName argument
  3. Refresh/restore the table schema if it changed unexpectedly
  4. Guard lookups with fields.stream().anyMatch before calling getDataField

Example fix

// before
DataField f = SchemaUtil.getDataField(fields, "Amount"); // actual name is 'amount'
// after
DataField f = SchemaUtil.getDataField(fields, "amount");
Defensive patterns

Strategy: validation

Validate before calling

Optional<DataField> f = fields.stream().filter(d -> d.name().equals(fieldName)).findFirst();
if (!f.isPresent()) throw new IllegalArgumentException("Field missing from Paimon schema: " + fieldName);

Type guard

DataField findOrNull(List<DataField> fields, String name) { return fields.stream().filter(d -> d.name().equals(name)).findFirst().orElse(null); }

Try / catch

try { DataField f = SchemaUtil.getDataField(fields, name); } catch (PaimonConnectorException e) { LOG.error("Field {} absent; schema fields={}", name, fields.stream().map(DataField::name).collect(Collectors.toList())); throw e; }

Prevention

When it happens

Trigger: Calling the Paimon sink/source converter path with a field name that does not exist in the Paimon table's schema list.

Common situations: Schema evolution dropped the column; case-sensitive name mismatch; schema file/catalog points to an older table version; hard-coded field name in config.

Understand the failure class

Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.

Related errors


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

Appendix: source

Thrown at seatunnel-connectors-v2/connector-paimon/src/main/java/org/apache/seatunnel/connectors/seatunnel/paimon/utils/SchemaUtil.java:104

        schemaOptions.remove(PaimonSinkOptions.CHANGELOG_TMP_PATH);
        if (!schemaOptions.isEmpty()) {
            paiSchemaBuilder.options(schemaOptions);
        }
        if (StringUtils.isNotBlank(comment)) {
            paiSchemaBuilder.comment(comment);
        }
        return paiSchemaBuilder.build();
    }

    public static Column toSeaTunnelType(BasicTypeDefine<DataType> typeDefine) {
        return PaimonTypeMapper.INSTANCE.convert(typeDefine);
    }

    public static DataField getDataField(List<DataField> fields, String fieldName) {
        Optional<DataField> firstField =
                fields.stream().filter(field -> field.name().equals(fieldName)).findFirst();
        if (!firstField.isPresent()) {
            throw new PaimonConnectorException(
                    PaimonConnectorErrorCode.GET_FIELD_FAILED,
                    "Can not get the field [" + fieldName + "] from source table");
        }
        return firstField.get();
    }
}

View on GitHub (pinned to cf67b549a7)