首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式获取群集/存储列

以编程方式获取群集/存储列
EN

Stack Overflow用户
提问于 2020-11-13 16:45:31
回答 1查看 66关注 0票数 1

作为参考,我主要使用以下方法通过amazon-athena连接到sqlalchemy

代码语言:javascript
复制
create_engine(
            f'awsathena+rest://:@athena.{myRegion}.amazonaws.com:443/{athena_schema}?s3_staging_dir={myS3_staging_path}',
            echo=True)

在大多数遵循ANSI-SQL标准的关系数据库中,我可以通过运行以下代码以编程方式获得表的分区列:

代码语言:javascript
复制
select *
from information_schema.columns
where table_name='myTable' and table_schema='mySchema'
    and extra_info = 'partition key'

但是,集群列的标记似乎没有类似的标记。我知道我可以通过以下途径获得这些信息:

代码语言:javascript
复制
show create table mySchema.myTable

但我感兴趣的是干净的程序解决方案,如果存在的话。我不想再发明轮子了。请告诉我如何做到这一点,或指出我的相关文件。

提前谢谢你。

PS:如果其他有关该表的信息(如文件位置和存储格式)也能以编程方式访问,那就太好了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-14 08:46:10

雅典娜使用Glue数据目录存储有关数据库和表的元数据。我不知道其中有多少是在information_schema中公开的,而且很少有关于它的文档。

但是,您可以通过直接查询Glue数据目录获得雅典娜所知道的一切。在这种情况下,如果您调用GetTable (例如,aws glue get-table …),您将在Table.StorageDescriptor.BucketColumns中找到存储信息。

GetTable调用还将为您提供文件的存储格式和位置(但是对于分区表,您需要使用GetPartitions进行额外调用以检索每个分区的数据的位置)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64824745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档