apache/seatunnel · error · KuduConnectorException
ILLEGAL_ARGUMENT
ILLEGAL_ARGUMENT
Error message
Column not found in Kudu schema:
What it means
KuduUtil.addPredicates validates each parsed filter condition against the Kudu table schema using schema.hasColumn(column); if the referenced column does not exist in the Kudu table, it throws a KuduConnectorException with CommonErrorCodeDeprecated.ILLEGAL_ARGUMENT. The message includes the offending column name.
Source
Thrown at seatunnel-connectors-v2/connector-kudu/src/main/java/org/apache/seatunnel/connectors/seatunnel/kudu/util/KuduUtil.java:224
Pattern pattern = Pattern.compile("(\\w+)\\s*([=><]=?|<=|>=)\\s*(.+)");
for (String condition : conditions) {
Matcher matcher = pattern.matcher(condition.trim());
String column = null;
String op = null;
String value = null;
if (matcher.matches()) {
column = matcher.group(1);
op = matcher.group(2);
value = matcher.group(3);
} else {
throw new IllegalArgumentException("Invalid filter condition: " + condition);
}
if (!schema.hasColumn(column)) {
throw new KuduConnectorException(
CommonErrorCodeDeprecated.ILLEGAL_ARGUMENT,
"Column not found in Kudu schema: " + column);
}
Type type = schema.getColumn(column).getType();
KuduPredicate.ComparisonOp comparisonOp = null;
switch (op) {
case "=":
comparisonOp = KuduPredicate.ComparisonOp.EQUAL;
break;
case ">":
comparisonOp = KuduPredicate.ComparisonOp.GREATER;
break;
case ">=":
comparisonOp = KuduPredicate.ComparisonOp.GREATER_EQUAL;
break;
case "<":View on GitHub (pinned to cf67b549a7)
Solutions
- Verify the column name against the actual Kudu table schema (kudu table describe or describe_table) and fix the filter
- Check case: Kudu column names are case-sensitive; match exactly
- If the table was migrated/renamed, update filter configuration to the new schema
Example fix
// before "filters": ["UserName = 'alice'"] // after (actual column is user_name) "filters": ["user_name = 'alice'"]
Defensive patterns
Strategy: validation
Validate before calling
for (String condition : filters) {
String col = condition.trim().split("\\s+")[0];
if (!kuduSchema.hasColumn(col)) {
throw new IllegalArgumentException("Column not in Kudu schema: " + col);
}
} Try / catch
try {
kuduUtil.getKuduScanToken(filters, schema, ...);
} catch (KuduConnectorException e) {
// verify column names against Kudu schema and retry
} Prevention
- Match column names exactly (case-sensitive) as defined in Kudu
- Refresh filter configs after schema migrations or renames
- Validate filter columns against table schema at job startup
- Keep filter configuration alongside the table DDL in version control
When it happens
Trigger: A filter condition references a column name that is not present in the Kudu table's schema, e.g. due to a typo, case-sensitivity mismatch, or the column having been dropped/renamed in Kudu.
Common situations: Case sensitivity: filter uses 'Name' but Kudu column is 'name'; config written for a different table; schema drift after table migration; column renamed without updating the filter config.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- An exception occurred while obtaining the table
- UNSUPPORTED_DATA_TYPE
- Invalid filter condition:
- Unsupported type:
- Operator %s requires a compareOption (cross-field comparison
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/f3ba1d0edef402e9.
Report an issue: GitHub.