如何获取AWS Athena中特定schema下的所有表详细信息

问题描述 投票:0回答:1

我通过以下查询在 Hive 中获取表的详细信息,但在 Athena 中没有找到等效信息。

use schema_name;
SHOW TABLE EXTENDED LIKE '*'

作为上述查询输出的一部分,我将获取每个表名称的以下属性的值。 表名称、所有者、位置、输入格式、输出格式、分区、分区列、totalFileSize、maxFileSize、minFileSize、lastAccessTime、lastUpdateTime

想要在 Athena 中获得上述所有详细信息,这就是我正在遵循的方法。

SELECT table_name FROM   information_schema.tables WHERE  table_schema = 'logging' // Lists all the tables under logging schema.
DESCRIBE EXTENDED AwsDataCatalog.logging.logtable1; // Getting the details in plain text per table, can parse and some how we can fetch relevant data. Do the same for all other tables under schema.

上述查询的局限性是,我们必须对每个表执行查询,而不是一次性获取所有表的详细信息。

有没有更好的方法来查询和获取所需信息?

sql hive amazon-athena
1个回答
0
投票

是的,你是对的。

Athena 目前一次只能运行一个描述命令。

您可以尝试使用如下外部脚本:

import boto3

# Initialize Athena client
client = boto3.client('athena', region_name='your-region')

# List of tables you want to describe
tables = ['table1', 'table2', 'table3']

for table in tables:
    query = f"DESCRIBE EXTENDED database_name.{table}"
    
    response = client.start_query_execution(
        QueryString=query,
        QueryExecutionContext={'Database': 'database_name'},
        ResultConfiguration={'OutputLocation': 's3://your-bucket/athena-results/'}
    )
    
    print(f"Started query for table {table}. QueryExecutionId: {response['QueryExecutionId']}")
© www.soinside.com 2019 - 2024. All rights reserved.