prestodb/presto · error · PrestoException
HIVE_FILESYSTEM_ERROR
HIVE_FILESYSTEM_ERROR
Error message
Failed getting FileSystem: ${path} What it means
A validation guard in the S3 Select record-cursor provider: it proactively resolves a FileSystem for the split's path via hdfsEnvironment.getFileSystem and wraps any failure (bad scheme, missing authority, underlying Hadoop FileSystem creation error) in this exception before record-cursor creation can proceed.
Source
Thrown at presto-hive/src/main/java/com/facebook/presto/hive/s3select/S3SelectRecordCursorProvider.java:86
ConnectorSession session,
HiveFileSplit fileSplit,
Properties schema,
List<HiveColumnHandle> columns,
TupleDomain<HiveColumnHandle> effectivePredicate,
DateTimeZone hiveStorageTimeZone,
TypeManager typeManager,
boolean s3SelectPushdownEnabled)
{
if (!s3SelectPushdownEnabled) {
return Optional.empty();
}
Path path = new Path(fileSplit.getPath());
try {
this.hdfsEnvironment.getFileSystem(session.getUser(), path, configuration);
}
catch (IOException e) {
throw new PrestoException(HIVE_FILESYSTEM_ERROR, "Failed getting FileSystem: " + path, e);
}
// Query is not going to filter any data, no need to use S3 Select.
if (!hasFilters(schema, effectivePredicate, columns)) {
return Optional.empty();
}
String serdeName = getDeserializerClassName(schema);
Optional<S3SelectDataType> s3SelectDataTypeOptional = S3SelectSerDeDataTypeMapper.getDataType(serdeName);
if (s3SelectDataTypeOptional.isPresent()) {
S3SelectDataType s3SelectDataType = s3SelectDataTypeOptional.get();
IonSqlQueryBuilder queryBuilder = new IonSqlQueryBuilder(typeManager, s3SelectDataType);
String ionSqlQuery = queryBuilder.buildSql(columns, effectivePredicate);
Optional<S3SelectLineRecordReader> recordReader = S3SelectLineRecordReaderProvider.get(configuration, clientConfig, path, fileSplit.getStart(), fileSplit.getLength(), fileSplit.getFileSize(), schema, ionSqlQuery, s3ClientFactory, s3SelectDataType);
// If S3 Select data type is not mapped to a S3SelectLineRecordReader it will return Optional.empty()View on GitHub (pinned to 55bb57d202)
Solutions
- Verify the path scheme (e.g. s3a://, s3://) has a configured Hadoop FileSystem implementation in the cluster
- Check that the S3/HDFS credentials and configuration for the user are correct
- Confirm the table location URI in the metastore is well-formed and points to an accessible location
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-hive/src/main/java/com/facebook/presto/hive/s3select/S3SelectRecordCursorProvider.java:86 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/78be9fd8f195fe38.
Report an issue: GitHub.