以编程方式获取集群/Bucketing列



作为参考,我通过sqlalchemy连接到amazon-athena,主要使用:

create_engine(
f'awsathena+rest://:@athena.{myRegion}.amazonaws.com:443/{athena_schema}?s3_staging_dir={myS3_staging_path}',
echo=True)

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

select *
from information_schema.columns
where table_name='myTable' and table_schema='mySchema'
and extra_info = 'partition key'

然而,分段聚类列似乎没有类似的标记。我知道我可以通过访问这些信息

show create table mySchema.myTable

但我对干净的程序解决方案感兴趣,如果有的话。我尽量不重新发明轮子。请告诉我如何做到这一点,或者给我指相关的文件。

提前谢谢。

附言:如果表的其他信息,如文件位置和存储格式也可以通过编程访问,那就太好了。

Athena使用Glue Data Catalog来存储有关数据库和表的元数据。我不知道information_schema中公开了多少,而且关于它的文档很少

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

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

相关内容

  • 没有找到相关文章

最新更新