如何解决在AWS Athena中创建数据库时如何获取DBPROPERTIES,S3Location和注释集?
如AWS athena文档中所提供。
https://docs.aws.amazon.com/athena/latest/ug/create-database.html
在创建Athena数据库时,我们可以指定DBPROPERTIES,S3Location和注释
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT 'database_comment']
[LOCATION 'S3_loc']
[WITH DBPROPERTIES ('property_name' = 'property_value') [,...]]
例如:
CREATE DATABASE IF NOT EXISTS clickstreams
COMMENT 'Site Foo clickstream data aggregates'
LOCATION 's3://myS3location/clickstreams/'
WITH DBPROPERTIES ('creator'='Jane D.','Dept.'='Marketing analytics');
可以说,我想从上面的示例中获取创建者的姓名。
解决方法
您可以使用Glue数据目录GetDatabase
API call获取这些信息。
Athena中的数据库和表存储在Glue数据目录中。当您在Athena中运行DDL语句时,它将这些语句转换为Glue API调用。由于历史原因,并不是您可以在Glue中进行的所有操作都可以在Athena中使用。
,我可以使用以下Glue数据目录代码以Json格式获取AWS Athena数据库属性。
package com.amazonaws.samples;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.glue.AWSGlue;
import com.amazonaws.services.glue.AWSGlueClient;
import com.amazonaws.services.glue.model.GetDatabaseRequest;
import com.amazonaws.services.glue.model.GetDatabaseResult;
public class Glue {
public static void main(String[] args) {
BasicAWSCredentials awsCreds = new BasicAWSCredentials("*api*","*key*");
AWSGlue glue = AWSGlueClient.builder().withRegion("*bucket_region*")
.withCredentials(new AWSStaticCredentialsProvider(awsCreds)).build();
GetDatabaseRequest req = new GetDatabaseRequest();
req.setName("*database_name*");
GetDatabaseResult result = glue.getDatabase(req);
System.out.println(result);
}
}
此外,用户需要具有以下权限
- AWSGlueServiceRole
- AmazonS3FullAccess
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。