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

  1. Verify the column name against the actual Kudu table schema (kudu table describe or describe_table) and fix the filter
  2. Check case: Kudu column names are case-sensitive; match exactly
  3. 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

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


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