我通过以下查询在 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.
上述查询的局限性是,我们必须对每个表执行查询,而不是一次性获取所有表的详细信息。
有没有更好的方法来查询和获取所需信息?
是的,你是对的。
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']}")