prestodb/presto · error · PrestoException
HIVE_UNSUPPORTED_FORMAT
HIVE_UNSUPPORTED_FORMAT
Error message
Split converter %s failed to create FileSplit.
What it means
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.
Source
Thrown at presto-hive/src/main/java/com/facebook/presto/hive/util/CustomSplitConversionUtils.java:61
{
for (CustomSplitConverter converter : converters) {
Optional<Map<String, String>> customSplitData = converter.extractCustomSplitInfo(split);
if (customSplitData.isPresent()) {
return customSplitData.get();
}
}
return ImmutableMap.of();
}
public static FileSplit recreateSplitWithCustomInfo(FileSplit split, Map<String, String> customSplitInfo)
{
for (CustomSplitConverter converter : converters) {
Optional<FileSplit> fileSplit;
try {
fileSplit = converter.recreateFileSplitWithCustomInfo(split, customSplitInfo);
}
catch (IOException e) {
throw new PrestoException(HIVE_UNSUPPORTED_FORMAT, String.format("Split converter %s failed to create FileSplit.", converter.getClass()), e);
}
if (fileSplit.isPresent()) {
return fileSplit.get();
}
}
return split;
}
}
View on GitHub (pinned to 55bb57d202)
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
Example fix
// before: stale customSplitInfo from older Presto // after: re-generate splits by clearing cache / re-running the query on matching versions // (no direct code change; align versions and invalidate cached splits)
Defensive patterns
Strategy: try-catch
Validate before calling
// sanity check before consuming custom split info
requireNonNull(customSplitInfo, "customSplitInfo is null");
if (!converter.getClass().getName().equals(customSplitInfo.getConverterClass())) {
throw new PrestoException(HIVE_UNSUPPORTED_FORMAT, "Converter mismatch: " + customSplitInfo.getConverterClass());
} Try / catch
try {
split = CustomSplitConversionUtils.recreateSplitWithCustomInfo(split, customSplitInfo, converters);
} catch (PrestoException e) {
if (HIVE_UNSUPPORTED_FORMAT.toErrorCode().equals(e.getErrorCode())) {
LOG.warn("Falling back to original split: " + e.getMessage());
return split; // degrade gracefully where safe
}
throw e;
} Prevention
- 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
When it happens
Trigger: Reading a split whose customSplitInfo blob was produced by an incompatible converter version or is corrupt; converter.recreateFileSplitWithCustomInfo throwing IOException on deserialization.
Common situations: 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).
Related errors
- HIVE_UNSUPPORTED_FORMAT
- HIVE_CANNOT_OPEN_SPLIT
- HIVE_UNSUPPORTED_FORMAT
- HIVE_UNSUPPORTED_FORMAT
- HIVE_CANNOT_OPEN_SPLIT
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/78291593fb35f8a2.
Report an issue: GitHub.