apache/flink · error · RuntimeException

Type information for input of type

Error message

Type information for input of type {} is not supported. Could not generate a comparator.

What it means

Thrown by OuterJoinOperatorBase.buildComparatorFor when the input's TypeInformation is neither AtomicType nor CompositeType, so no comparator can be generated for the join key. This guards comparator construction for both left and right inputs of an outer join; the offending input is identified by the 'input' index parameter.

Solutions

  1. Address the cause reported by the error message: Type information for input of type the reported value is not supported. Could not generate a comparator.
  2. Verify the inputs, configuration values, and classpath/dependency setup related to this operation, then retry.

Example fix

Correct the condition described ("Type information for input of type the reported value is not supported. Could not generate a comparator.") and rerun the job or command.
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Triggered at runtime when the operation fails because: Type information for input of type the reported value is not supported. Could not generate a comparator.

Common situations: Commonly caused by misconfiguration, missing dependencies or files, unsupported types or operations, or invalid user input leading to: Type information for input of type the reported value is not supported. Could not generate a comparator.


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

Appendix: source

Thrown at flink-core/src/main/java/org/apache/flink/api/common/operators/base/OuterJoinOperatorBase.java:178

        return result;
    }

    @SuppressWarnings("unchecked")
    private <T> TypeComparator<T> buildComparatorFor(
            int input, ExecutionConfig executionConfig, TypeInformation<T> typeInformation) {
        TypeComparator<T> comparator;
        if (typeInformation instanceof AtomicType) {
            comparator = ((AtomicType<T>) typeInformation).createComparator(true, executionConfig);
        } else if (typeInformation instanceof CompositeType) {
            int[] keyPositions = getKeyColumns(input);
            boolean[] orders = new boolean[keyPositions.length];
            Arrays.fill(orders, true);

            comparator =
                    ((CompositeType<T>) typeInformation)
                            .createComparator(keyPositions, orders, 0, executionConfig);
        } else {
            throw new RuntimeException(
                    "Type information for input of type "
                            + typeInformation.getClass().getCanonicalName()
                            + " is not supported. Could not generate a comparator.");
        }
        return comparator;
    }

    private static class OuterJoinListIterator<IN1, IN2> {

        private static enum MatchStatus {
            NONE_REMAINED,
            FIRST_REMAINED,
            SECOND_REMAINED,
            FIRST_EMPTY,
            SECOND_EMPTY
        }

        private OuterJoinType outerJoinType;

View on GitHub (pinned to 2f3c205e92)