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
- Check the actual Paimon table schema (catalog schema) and use the exact field name
- Fix case sensitivity of the fieldName argument
- Refresh/restore the table schema if it changed unexpectedly
- 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
- Log/echo the Paimon table schema at job start
- Use exact field names from catalog metadata, not manual copies
- Watch for schema evolution changing field names
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
- can't find field [ ]
- The column named [ ] is not exists
- UNSUPPORTED_PRIMARY_DATATYPE
- An exception occurred while obtaining the table
- An unexpected error occurred
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)