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

  1. Remove or cast the unsupported column out of the Parquet table schema
  2. Upgrade Flink to a version whose ParquetSplitReaderUtil supports the logical type (support grows release over release)
  3. 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

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


AI-assisted analysis of apache/flink@2f3c205e92 (2026-08-14). Data as JSON: /api/errors/a4acc295cb6a5b16. Report an issue: GitHub.