কম্পিউটার টিউটোরিয়াল

Boto3 ব্যবহার করে AWS Glue ডেটা ক্যাটালগ থেকে টেবিল ডেফিনিশন পাওয়া


ভূমিকা

AWS Glue ডেটা ক্যাটালগে টেবিল মেটাডেটা (স্কিমা, লোকেশন, ফরম্যাট, পার্টিশন কী, ইত্যাদি) সংরক্ষিত থাকে। get_tables API ব্যবহার করে একটি ডেটাবেসের সব টেবিল বা রেগুলার এক্সপ্রেশন অনুযায়ী ফিল্টার করা টেবিলের ডেফিনিশন পাওয়া যায়।

সমস্যা বিবরণ

পাইথনে boto3 লাইব্রেরি ব্যবহার করে একটি ডেটাবেস (উদাহরণ: 'QA-test') থেকে টেবিল ডেফিনিশন পাওয়া (রেগুলার এক্সপ্রেশন ঐচ্ছিক)।

অ্যালগরিদম / ধাপসমূহ

  1. boto3 এবং botocore.exceptions ইম্পোর্ট করুন।
  2. ফাংশনটি বাধ্যতামূলক database_name এবং ঐচ্ছিক regular_expression_for_table_name প্যারামিটার নেবে।
  3. AWS সেশন এবং Glue ক্লায়েন্ট তৈরি করুন।
  4. glue_client.get_tables(DatabaseName=database_name, Expression=regular_expression_for_table_name) কল করুন।
  5. রেসপন্সে TableList (টেবিল অবজেক্টের লিস্ট) এবং ResponseMetadata থাকবে।
  6. এক্সেপশন হ্যান্ডল করুন।

উদাহরণ কোড

import boto3
from botocore.exceptions import ClientError

def retrieves_tables_detail(database_name, regular_expression_for_table_name=None):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        response = glue_client.get_tables(
            DatabaseName=database_name,
            Expression=regular_expression_for_table_name
        )
        return response
    except ClientError as e:
        raise Exception("boto3 client error in retrieves_tables_detail: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in retrieves_tables_detail: " + e.__str__())

print(retrieves_tables_detail('QA-test'))

আউটপুট (সংক্ষিপ্ত)

{'TableList': [
    {'Name': 'security', 'DatabaseName': 'QA-test', 'Owner': 'owner', 'CreateTime': ..., 'UpdateTime': ..., 'LastAccessTime': ..., 'Retention': 0, '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', 'Compressed': False, 'NumberOfBuckets': -1, 'SerdeInfo': {'SerializationLibrary': 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe', 'Parameters': {'serialization.format': '1'}}, 'BucketColumns': [], 'SortColumns': [], 'Parameters': {...}}, 'PartitionKeys': [], 'TableType': 'EXTERNAL_TABLE', 'Parameters': {...}, 'CreatedBy': 'arn:aws:sts::*********:assumed-role/glue-role/AWS-Crawler', 'VersionId': '2'},
    {'Name': 'employee', ...}
], 'ResponseMetadata': {...}}

ব্যাখ্যা

  • প্রতিটি টেবিল অবজেক্টে বিস্তারিত মেটাডেটা থাকে: কলাম স্কিমা, S3 লোকেশন, ফাইল ফরম্যাট (Parquet), সারডি (SerDe) ইনফো, পার্টিশন কী, টেবিল টাইপ (EXTERNAL_TABLE), এবং ক্রলার মেটাডেটা।

  • Expression প্যারামিটার দিয়ে টেবিল নাম ফিল্টার করা যায় (SQL LIKE সিনট্যাক্স)।

  • বড় ডেটাবেসের জন্য পেজিনেশন (NextToken) ব্যবহার করুন।


  1. Boto3 ব্যবহার করে AWS Glue Data Catalog থেকে একটি টেবিলের নির্দিষ্ট ভার্সন ডিলিট করা

  2. Boto3 ব্যবহার করে AWS Glue Data Catalog থেকে একটি টেবিল ডিলিট করা

  3. Boto3 ব্যবহার করে AWS Data Catalog থেকে একটি ডেটাবেস ডিলিট করা

  4. Boto3 ব্যবহার করে AWS Glue Data Catalog থেকে একটি ক্রলার ডিলিট করা