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
- Remove the predicate on the unsupported-typed column, or filter those rows after reading
- Cast/relocate the data to a supported column type (e.g. STRING instead of BINARY) if range filtering is essential
- 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
- Only build scan predicates on columns with supported Kudu types
- Avoid predicate filters on BINARY/DECIMAL columns
- Check connector version for newly supported types before upgrading filters
- Handle unsupported-typed columns with post-read filtering
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
- DATA_TYPE_CAST_FIELD
- Invalid filter condition:
- ILLEGAL_ARGUMENT
- Unsupported convert %s to Map, typeDefine: %s
- Unsupported convert %s to Array, typeDefine: %s
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/d31b7e151b0d6331.
Report an issue: GitHub.