apache/seatunnel · error · RedisConnectorException

UNSUPPORTED_DATA_TYPE

UNSUPPORTED_DATA_TYPE

Error message

UnSupport redisDataType,only support string,list,hash,set,zset

What it means

RedisSourceReader.pollNext reads records by dispatching to a RedisRecordReader based on the table's RedisDataType. If the data type is not string, list, hash, set, or zset, no reader branch exists and the reader throws RedisConnectorException with UNSUPPORTED_DATA_TYPE.

Source

Thrown at seatunnel-connectors-v2/connector-redis/src/main/java/org/apache/seatunnel/connectors/seatunnel/redis/source/RedisSourceReader.java:184

            return;
        }
        if (RedisDataType.STRING.equals(dataType) || RedisDataType.KEY.equals(dataType)) {
            redisRecordReader.pollStringToNext(keys, output);
            return;
        }
        if (RedisDataType.LIST.equals(dataType)) {
            redisRecordReader.pollListToNext(keys, output);
            return;
        }
        if (RedisDataType.SET.equals(dataType)) {
            redisRecordReader.pollSetToNext(keys, output);
            return;
        }
        if (RedisDataType.ZSET.equals(dataType)) {
            redisRecordReader.pollZsetToNext(keys, output);
            return;
        }
        throw new RedisConnectorException(
                CommonErrorCode.UNSUPPORTED_DATA_TYPE,
                "UnSupport redisDataType,only support string,list,hash,set,zset");
    }

    /**
     * Create a record reader for the given table configuration.
     *
     * @param tableConfig Table configuration
     * @return RedisRecordReader
     */
    private RedisRecordReader createRecordReader(RedisTableConfig tableConfig) {
        DeserializationSchema<SeaTunnelRow> deserializationSchema =
                tableConfig.getDeserializationSchema();
        TablePath tablePath = tableConfig.getTablePath();

        if (Boolean.TRUE.equals(tableConfig.getReadKeyEnabled())) {
            return new KeyedRecordReader(
                    this.redisParameters,

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Set redis_data_type to string, list, hash, set, or zset in the source table config
  2. Verify the table config key spelling and that table parsing populated the data type
  3. If the type is needed, add a poll branch and a corresponding record reader implementation

Example fix

// before
redis_data_type = "stream"
// after
redis_data_type = "list"
Defensive patterns

Strategy: validation

Validate before calling

if (!Set.of("string","list","hash","set","zset").contains(tableCfg.get("redis_data_type"))) throw new IllegalArgumentException("Unsupported redis_data_type for source");

Prevention

When it happens

Trigger: A Redis source table is configured with a redis_data_type outside the supported set (or resolves to null); processTable drives pollNext and the dispatch chain ends in the throw.

Common situations: Typo in redis_data_type (e.g. 'bitmap', 'stream'); a data type supported by another Redis connector version but not this one; null data type from incomplete table config.

Related errors


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