Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Lấy định nghĩa Table trong Database AWS Glue Data Catalog với Boto3

Dùng boto3 gọi get_tables để lấy metadata các bảng trong database, có thể lọc bằng regex expression trên tên bảng.

Quy trình

  1. Import boto3, ClientError.
  2. Hàm nhận database_name (bắt buộc) và expression (tùy chọn).
  3. Tạo session, client Glue.
  4. Gọi glue_client.get_tables(DatabaseName=..., Expression=...).
  5. Trả về danh sách bảng chi tiết (cột, storage descriptor, partition keys, v.v.).
  6. Xử lý ngoại lệ.

Code mẫu

import boto3
from botocore.exceptions import ClientError

def lay_dinh_nghia_bang(database_name, expression=None):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        response = glue_client.get_tables(DatabaseName=database_name, Expression=expression)
        return response
    except ClientError as e:
        raise Exception("Lỗi boto3 client: " + str(e))
    except Exception as e:
        raise Exception("Lỗi không mong đợi: " + str(e))

print(lay_dinh_nghia_bang('QA-test'))

Kết quả

{'TableList': [{'Name': 'security', 'DatabaseName': 'QA-test', 'Owner': 'owner', 'CreateTime': datetime.datetime(2020,9,10,...), 'UpdateTime': ..., 'StorageDescriptor': {'Columns': [{'Name': 'assettypecode', 'Type': 'string'}, ...], 'Location': 's3://test/security/', 'InputFormat': 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat', 'OutputFormat': 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat', 'SerdeInfo': {...}, 'Parameters': {...}}, 'PartitionKeys': [], 'TableType': 'EXTERNAL_TABLE', 'Parameters': {...}, 'CreatedBy': 'arn:aws:sts::...:assumed-role/glue-role/AWS-Crawler', 'VersionId': '2'}, ...], 'ResponseMetadata': {...}}