Trino结合Hive元存储使用S3报错:No FileSystem for scheme"s3"如何解决?
解决Trino连接S3时的"UnsupportedFileSystemException"问题
检查Jar包完整性与版本匹配
- 确认
hadoop-aws-2.10.1.jar(注意文件名应为点分隔版本号,而非连字符)和aws-java-sdk-bundle-1.11.890.jar(需用完整bundle包,单个aws-java-sdk包缺少依赖)已放置到所有Trino节点的plugin/hive-hadoop2/lib目录,而非Trino根目录的lib。Hive侧也要将Jar包放入Hive的lib目录,并重启Hive metastore服务。 - 版本必须匹配:hadoop-aws版本要与Trino使用的Hadoop版本一致(此处为2.10.1),aws-java-sdk-bundle 1.11.890与hadoop-2.10.x兼容。
修正core-site.xml配置项
- 确保配置项名称完全正确,你提到的
s.impl应为fs.s3.impl,完整配置示例:
<property> <name>fs.s3.impl</name> <value>org.apache.hadoop.fs.s3a.S3AFileSystem</value> </property> <property> <name>fs.s3a.access.key</name> <value>你的AWS Access Key</value> </property> <property> <name>fs.s3a.secret.key</name> <value>你的AWS Secret Key</value> </property> <!-- 若使用S3兼容存储,需添加以下配置 --> <property> <name>fs.s3a.endpoint</name> <value>https://s3.xxx.com</value> </property> <property> <name>fs.s3a.path.style.access</name> <value>true</value> </property>
- 注意:Trino使用的core-site.xml需放在
etc/catalog/hive目录(对应你的Hive catalog配置目录),确保Hive catalog能加载到正确的Hadoop配置。
重启服务与验证
- 重启所有Trino节点和Hive metastore服务,确保配置与Jar包生效。
- 通过Trino CLI执行测试语句验证连接:
SELECT * FROM hive.default."s3a://your-bucket/path/test-file.parquet" LIMIT 10;
若能正常读取数据,说明S3连接配置正确。
排查其他潜在问题
- 检查Trino的Hive catalog配置文件(如
etc/catalog/hive.properties),确保hive.config.resources参数指定了正确的core-site.xml路径:
hive.config.resources=/etc/trino/catalog/hive/core-site.xml,/etc/trino/catalog/hive/hdfs-site.xml
- 验证AWS权限:Access Key需具备S3读写权限(s3:ListBucket、s3:GetObject、s3:PutObject等),可通过AWS CLI测试权限是否正常。
内容的提问来源于stack exchange,提问作者Jayalal
相关产品推荐
相关产品推荐

