使用JDBC连接AWS Athena时如何指定目标数据库?
解决AWS Athena JDBC连接时指定目标数据库/目录的问题
方法1:在JDBC URL中直接指定Catalog和Database
Athena的JDBC URL支持通过参数直接指定要连接的Catalog(数据源)和Schema(对应Athena中的Database),修改后的URL格式如下:
"jdbc:awsathena://AwsRegion=us-east-1;User=%s;Password=%s;S3OutputLocation=%s;Catalog=<你的Catalog名称>;Schema=<你的Database名称>"
示例(假设表在my_catalog下的my_database中):
"jdbc:awsathena://AwsRegion=us-east-1;User=%s;Password=%s;S3OutputLocation=s3://your-output-bucket/;Catalog=my_catalog;Schema=my_database"
方法2:连接后执行USE语句切换上下文
如果不想修改URL,可在建立连接后先执行USE语句切换到目标上下文,后续查询默认使用该环境:
USE my_catalog.my_database; SELECT * FROM fc_content; -- 无需再写全限定表名
方法3:在SQL查询中使用全限定表名
直接在查询语句里写明表所属的Catalog和Database,无需修改连接配置:
SELECT * FROM my_catalog.my_database.fc_content;
错误原因说明
你遇到的TABLE_NOT_FOUND错误,是因为Athena JDBC驱动默认使用awsdatacatalog作为默认Catalog、default作为默认Database,而你的表不在这个默认上下文中,因此需要显式指定正确的Catalog和Database。
内容的提问来源于stack exchange,提问作者Raphael Milani
相关产品推荐
相关产品推荐

