apache/seatunnel · error · UnsupportedOperationException

The file does not support the compressed file reading

Error message

The file does not support the compressed file reading

What it means

The base AbstractReadStrategy.readProcess hook is an unsupported-operation stub: only readers that support compressed archive reading override it. If a concrete read strategy (or file format) does not implement compressed-file processing, calling it throws UnsupportedOperationException with this message.

Source

Thrown at seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/AbstractReadStrategy.java:580

        if (maxBytes <= 0 || entrySize <= 0 || entrySize <= maxBytes) {
            return;
        }
        throw new FileConnectorException(
                CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION,
                String.format(
                        "Archived entry [%s] is %,d bytes, larger than POI limit %,d bytes. "
                                + "Please set excel_engine = EasyExcel, or increase the limit if POI is required.",
                        entryName, entrySize, maxBytes));
    }

    protected void readProcess(
            FileSourceSplit split,
            Collector<SeaTunnelRow> output,
            InputStream inputStream,
            Map<String, String> partitionsMap,
            String currentFileName)
            throws IOException {
        throw new UnsupportedOperationException(
                "The file does not support the compressed file reading");
    }

    protected Map<String, String> parsePartitionsByPath(String path) {
        LinkedHashMap<String, String> partitions = new LinkedHashMap<>();
        if (StringUtils.isBlank(path)) {
            return partitions;
        }
        Arrays.stream(path.split("/", -1))
                .filter(split -> split.contains("="))
                .map(split -> split.split("=", -1))
                .forEach(kv -> partitions.put(kv[0], kv[1]));
        return partitions;
    }

    protected String getPathForPartitionInference(String fallbackPath) {
        if (!fileNames.isEmpty()) {
            return fileNames.get(0);

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Decompress the archive before ingestion and point the source at the uncompressed files.
  2. Switch to a file_format_type/reader that supports compressed reading (e.g. text/csv/json readers with archive support), or excel_engine = EasyExcel for Excel.
  3. Upgrade SeaTunnel to a version where the chosen format supports archive reading.

Example fix

// before
file_format_type = csv
path = "/data/dump.tar.gz"
// after
# decompress first: tar -xzf dump.tar.gz -C /data/dump/
path = "/data/dump"
Defensive patterns

Strategy: validation

Validate before calling

if (path.endsWith(".zip") || path.endsWith(".tar.gz") || path.endsWith(".gz")) {
    // verify chosen file_format_type/reader documents compressed-file support before running
}

Try / catch

try {
    read(path);
} catch (UnsupportedOperationException e) {
    if (e.getMessage().contains("compressed file reading")) {
        // decompress externally or switch format, then retry
    }
}

Prevention

When it happens

Trigger: A source split resolves to a compressed archive file and resolveArchiveCompressedInputStream dispatches to readProcess(...) for the format's reader, but that reader class does not override the default readProcess implementation.

Common situations: Using a file format/reader combination (e.g. a format whose reader has no archive support) against a .zip/.tar.gz input; the same job works with plain files but fails once the file is compressed.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


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