apache/seatunnel · error · IllegalArgumentException

Unsupported type:

Error message

Unsupported type: 

What it means

KuduUtil.parseValue converts the string value of a filter predicate into a Java object matching the Kudu column type (BYTE/SHORT/INT/LONG, STRING, BOOLEAN, TIMESTAMP, FLOAT, DOUBLE). When the column's Kudu type is not among the handled cases (e.g. BINARY, DECIMAL, DATE, UNIXTIME_MICROS variants depending on version), it throws an IllegalArgumentException 'Unsupported type: <type>'.

Source

Thrown at seatunnel-connectors-v2/connector-kudu/src/main/java/org/apache/seatunnel/connectors/seatunnel/kudu/util/KuduUtil.java:287

                    return Short.valueOf(value);
                case INT32:
                    return Integer.valueOf(value);
                case INT64:
                    return Long.valueOf(value);
                case STRING:
                    return value.startsWith("'") && value.endsWith("'")
                            ? value.substring(1, value.length() - 1)
                            : value;
                case BOOL:
                    return Boolean.valueOf(value);
                case UNIXTIME_MICROS:
                    return new java.sql.Timestamp(Long.parseLong(value));
                case FLOAT:
                    return Float.valueOf(value);
                case DOUBLE:
                    return Double.valueOf(value);
                default:
                    throw new IllegalArgumentException("Unsupported type: " + type);
            }
        } catch (NumberFormatException e) {
            throw new KuduConnectorException(
                    CommonErrorCodeDeprecated.ILLEGAL_ARGUMENT,
                    "Failed to parse value '" + value + "' as type " + type,
                    e);
        }
    }
}

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Remove the predicate on the unsupported-typed column, or filter those rows after reading
  2. Cast/relocate the data to a supported column type (e.g. STRING instead of BINARY) if range filtering is essential
  3. Extend parseValue with a case for the missing Kudu type and rebuild the connector

Example fix

// before
"filters": ["binary_col = 'abc'"]
// after: filter on a supported column
"filters": ["id > 100"]
Defensive patterns

Strategy: validation

Validate before calling

Set<org.apache.kudu.Type> SUPPORTED = Set.of(
    Type.INT8, Type.INT16, Type.INT32, Type.INT64, Type.STRING,
    Type.BOOL, Type.UNIXTIME_MICROS, Type.FLOAT, Type.DOUBLE);
if (!SUPPORTED.contains(schema.getColumn(col).getType())) {
    // skip predicate or handle before calling addPredicates
}

Try / catch

try {
    parsed = kuduUtil.parseValue(type, value);
} catch (IllegalArgumentException e) {
    // remove predicate on this column or filter client-side
}

Prevention

When it happens

Trigger: A filter predicate is applied to a Kudu column whose type has no parsing branch in parseValue, most commonly BINARY, DECIMAL, or DATE columns.

Common situations: Filtering on a BINARY or DECIMAL column with the string-based filter syntax; connector version predates support for newer Kudu types; users assume all column types are filterable via this util.

Related errors


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