{"record":{"id":"78291593fb35f8a2","repo":"prestodb/presto","slug":"hive-unsupported-format-782915","errorCode":"HIVE_UNSUPPORTED_FORMAT","errorMessage":"Split converter %s failed to create FileSplit.","messagePattern":"Split converter (.+?) failed to create FileSplit\\.","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-hive/src/main/java/com/facebook/presto/hive/util/CustomSplitConversionUtils.java","lineNumber":61,"sourceCode":"    {\n        for (CustomSplitConverter converter : converters) {\n            Optional<Map<String, String>> customSplitData = converter.extractCustomSplitInfo(split);\n            if (customSplitData.isPresent()) {\n                return customSplitData.get();\n            }\n        }\n        return ImmutableMap.of();\n    }\n\n    public static FileSplit recreateSplitWithCustomInfo(FileSplit split, Map<String, String> customSplitInfo)\n    {\n        for (CustomSplitConverter converter : converters) {\n            Optional<FileSplit> fileSplit;\n            try {\n                fileSplit = converter.recreateFileSplitWithCustomInfo(split, customSplitInfo);\n            }\n            catch (IOException e) {\n                throw new PrestoException(HIVE_UNSUPPORTED_FORMAT, String.format(\"Split converter %s failed to create FileSplit.\", converter.getClass()), e);\n            }\n            if (fileSplit.isPresent()) {\n                return fileSplit.get();\n            }\n        }\n        return split;\n    }\n}\n","sourceCodeStart":43,"sourceCodeEnd":70,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-hive/src/main/java/com/facebook/presto/hive/util/CustomSplitConversionUtils.java#L43-L70","documentation":"CustomSplitConversionUtils.recreateSplitWithCustomInfo iterates registered CustomSplitConverters to rebuild a FileSplit from custom split info. If a converter throws IOException while recreating the split, the utility wraps it in a PrestoException with HIVE_UNSUPPORTED_FORMAT, naming the converter class. It means the connector's split converter could not decode/rehydrate the split info, typically a format or serialization mismatch.","triggerScenarios":"Reading a split whose customSplitInfo blob was produced by an incompatible converter version or is corrupt; converter.recreateFileSplitWithCustomInfo throwing IOException on deserialization.","commonSituations":"Upgrading Presto or a storage-format plugin so old split info no longer parses; corrupt cached split info; a connector registered for a format it cannot recreate (e.g. certain ORC/Parquet custom splits).","solutions":["Clear stale split caches / re-plan the query so splits are regenerated with the current converter","Ensure the Presto version that reads the split info matches the one that produced it (avoid rolling upgrades across incompatible versions)","Inspect the wrapped IOException cause to identify the serialization problem","Fix or disable the offending CustomSplitConverter for that format","Verify table/storage format is actually supported by the configured converters"],"exampleFix":"// before: stale customSplitInfo from older Presto\n// after: re-generate splits by clearing cache / re-running the query on matching versions\n// (no direct code change; align versions and invalidate cached splits)","handlingStrategy":"try-catch","validationCode":"// sanity check before consuming custom split info\nrequireNonNull(customSplitInfo, \"customSplitInfo is null\");\nif (!converter.getClass().getName().equals(customSplitInfo.getConverterClass())) {\n    throw new PrestoException(HIVE_UNSUPPORTED_FORMAT, \"Converter mismatch: \" + customSplitInfo.getConverterClass());\n}","typeGuard":null,"tryCatchPattern":"try {\n    split = CustomSplitConversionUtils.recreateSplitWithCustomInfo(split, customSplitInfo, converters);\n} catch (PrestoException e) {\n    if (HIVE_UNSUPPORTED_FORMAT.toErrorCode().equals(e.getErrorCode())) {\n        LOG.warn(\"Falling back to original split: \" + e.getMessage());\n        return split; // degrade gracefully where safe\n    }\n    throw e;\n}","preventionTips":["Keep all Presto nodes on the same version during rolling upgrades","Invalidate cached custom split info after connector/format upgrades","Log the converter class and IOException cause for diagnosis","Register converters only for formats they fully support"],"tags":["hive","split","serialization","unsupported-format"],"backgroundTag":"split-deserialization-failed","analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}