我正在尝试从我的 aws 数据目录中的数据库获取表的列表。 我正在尝试使用 boto3。 我在 aws 上的 sagemaker 笔记本中运行下面的代码。 它会永远运行(例如超过 30 分钟)并且不返回任何结果。 test_db 中只有 4 个表。 我的目标是运行类似的代码作为 awsglueetl 作业的一部分,我将在编辑后的 awsetl 作业脚本中运行该代码。 有谁知道问题可能是什么或建议如何做到这一点?
代码:
import boto3
from pprint import pprint
glue = boto3.client('glue', region_name='us-east-2')
response = glue.get_tables(
DatabaseName=‘test_db’
)
print(pprint(response['TableList']))
db = session.resource('dynamodb', region_name="us-east-2")
tables = list(db.tables.all())
print(tables)
资源 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/dynamodb.html
只要您知道数据目录的名称,就可以将 boto3 与 Athena 客户端的 list_table_metadata 方法一起使用 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/athena/client /list_table_metadata.html
import boto3
client = boto3.client("athena", region_name="us-east-2")
table_metadata = client.list_table_metadata(CatalogName=`CatalogName`, DatabaseName=`test_db`)
print(table_metadata)
这将返回有关数据库中表的元数据字典。如果您只想获取表的名称,则可以使用一些列表理解:
[table["Name"] for table in table_metadata['TableMetadataList']]