apache/flink · error · UnsupportedOperationException
{} is not supported now.
Error message
{} is not supported now. What it means
UnsupportedOperationException from the default branch of createColumnReader in ParquetSplitReaderUtil. The factory maps logical types to column readers (primitives via their Parquet physical type, ARRAY/MAP/MULTISET/ROW via NestedColumnReader); any other LogicalTypeRoot reaches the throw with the offending type in the message.
Source
Thrown at flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/vector/ParquetSplitReaderUtil.java:378
case INT64:
return new LongColumnReader(
descriptors.get(0), pages.getPageReader(descriptors.get(0)));
case BINARY:
return new BytesColumnReader(
descriptors.get(0), pages.getPageReader(descriptors.get(0)));
case FIXED_LEN_BYTE_ARRAY:
return new FixedLenBytesColumnReader(
descriptors.get(0),
pages.getPageReader(descriptors.get(0)),
((DecimalType) fieldType).getPrecision());
}
case ARRAY:
case MAP:
case MULTISET:
case ROW:
return new NestedColumnReader(isUtcTimestamp, pages, field);
default:
throw new UnsupportedOperationException(fieldType + " is not supported now.");
}
}
public static WritableColumnVector createWritableColumnVector(
int batchSize,
LogicalType fieldType,
Type type,
List<ColumnDescriptor> columnDescriptors,
int depth) {
List<ColumnDescriptor> descriptors =
getAllColumnDescriptorByType(depth, type, columnDescriptors);
PrimitiveType primitiveType = descriptors.get(0).getPrimitiveType();
PrimitiveType.PrimitiveTypeName typeName = primitiveType.getPrimitiveTypeName();
switch (fieldType.getTypeRoot()) {
case BOOLEAN:
checkArgument(
typeName == PrimitiveType.PrimitiveTypeName.BOOLEAN,
"Unexpected type: %s",View on GitHub (pinned to 2f3c205e92)
Solutions
- Remove or cast the unsupported column out of the Parquet table schema
- Upgrade Flink to a version whose ParquetSplitReaderUtil supports the logical type (support grows release over release)
- Store the exotic column in a different format (e.g. JSON/AVRO string encoding) and parse downstream
Example fix
-- before
CREATE TABLE t (k INT, u DISTINCT_TYPE_OF_INT) WITH ('format'='parquet');
-- after: store as plain INT
CREATE TABLE t (k INT, u INT) WITH ('format'='parquet'); Defensive patterns
Strategy: type-guard
Type guard
static boolean isParquetReadableType(LogicalTypeRoot root) {
return root == LogicalTypeRoot.CHAR || root == LogicalTypeRoot.VARCHAR
|| root == LogicalTypeRoot.BOOLEAN || root == LogicalTypeRoot.BINARY_STRING_OR_NONE
|| root == LogicalTypeRoot.TINYINT || root == LogicalTypeRoot.SMALLINT
|| root == LogicalTypeRoot.INTEGER || root == LogicalTypeRoot.BIGINT
|| root == LogicalTypeRoot.FLOAT || root == LogicalTypeRoot.DOUBLE
|| root == LogicalTypeRoot.DATE || root == LogicalTypeRoot.TIME_WITHOUT_TIME_ZONE
|| root == LogicalTypeRoot.TIMESTAMP_WITHOUT_TIME_ZONE
|| root == LogicalTypeRoot.TIMESTAMP_WITH_LOCAL_TIME_ZONE
|| root == LogicalTypeRoot.DECIMAL
|| root == LogicalTypeRoot.ARRAY || root == LogicalTypeRoot.MAP
|| root == LogicalTypeRoot.MULTISET || root == LogicalTypeRoot.ROW;
} Try / catch
catch (UnsupportedOperationException e) { if (e.getMessage().endsWith("is not supported now.")) { /* remove or cast the column, or upgrade Flink */ } else throw e; } Prevention
- Keep Parquet table schemas to the standard SQL types supported by your Flink version
- Smoke-test full schema reads in CI against the exact Flink version in production
When it happens
Trigger: createColumnReader(...) called with a fieldType outside the supported set - e.g. DISTINCT_TYPE, STRUCTURED_TYPE, SYMBOL, RAW, UNRESOLVED, or TIMESTAMP variants whose physical Parquet type has no branch in that Flink version.
Common situations: Table schemas carrying user-defined/structured types or RAW types over Parquet; reading Parquet written by newer writers whose logical type annotations the older Flink reader does not map; incomplete type support in the vectorized path of a given release.
Related errors
- Unsupported type: {}
- Unsupported type: {}
- Only support seek at first.
- A stream against this file was already created.
- Please use AvroParquetReaders.forSpecificRecord(Class<T>) fo
AI-assisted analysis of apache/flink@2f3c205e92 (2026-08-14).
Data as JSON: /api/errors/a4acc295cb6a5b16.
Report an issue: GitHub.