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

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


সমস্যা বিবরণ − Python-এ boto3 লাইব্রেরি ব্যবহার করে একটি ডেটাবেসের টেবিল ডেফিনিশন পুনরুদ্ধার করা।

উদাহরণ − 'QA-test' ডেটাবেস এবং 'security' টেবিলের টেবিল ডেফিনিশন পুনরুদ্ধার করা।

সমাধানের পদ্ধতি/অ্যালগরিদম

ধাপ ১ − boto3 এবং botocore এক্সসেপশন ইম্পোর্ট করে এক্সসেপশন হ্যান্ডল করা।

ধাপ ২ − database_name এবং table_name হলো বাধ্যতামূলক প্যারামিটার। এটি প্রদত্ত টেবিলের ডেফিনিশন আনয়ন করে।

ধাপ ৩ − boto3 লাইব্রেরি ব্যবহার করে AWS সেশন তৈরি করা। নিশ্চিত করুন region_name ডিফল্ট প্রোফাইলে ذکر করা আছে। না থাকলে সেশন তৈরি করার সময় স্পষ্টভাবে region_name পাস করুন।

ধাপ ৪ − Glue-এর জন্য AWS ক্লায়েন্ট তৈরি করা।

ধাপ ৫ − এখন get_table ফাংশন ব্যবহার করুন এবং database_name কে DatabaseName এবং table_name কে Name প্যারামিটার হিসেবে পাস করুন।

ধাপ ৬ − এটি প্রদত্ত টেবিলের ডেফিনিশন রিটার্ন করে। যদি টেবিলের একাধিক ভার্সন থাকে, তবে এটি সবসময় টেবিলের বর্তমান/সর্বশেষ ভার্সনের ডিটেইলস আনয়ন করে।

ধাপ ৭ − জব চেক করার সময় যদি কিছু ভুল হয় তবে জেনেরিক এক্সসেপশন হ্যান্ডল করা।

উদাহরণ

একটি ডেটাবেসের টেবিল ডেফিনিশন পুনরুদ্ধার করতে নিচের কোড ব্যবহার করুন −

import boto3 from botocore.exceptions import ClientError def retrieves_table_details(database_name, table_name):     session = boto3.session.Session()     glue_client = session.client('glue')     try:         response = glue_client.get_table(DatabaseName=database_name, Name=table_name)         return response     except ClientError as e:         raise Exception("boto3 client error in retrieves_table_details: " + e.__str__())     except Exception as e:         raise Exception("Unexpected error in retrieves_table_details: " + e.__str__()) print(retrieves_table_details('QA-test', 'security'))

আউটপুট

{'Table': {'Name': 'security', 'DatabaseName': 'QA-test', 'Owner': 'owner', 'CreateTime': datetime.datetime(2020, 9, 10, 22, 27, 24, tzinfo=tzlocal()), 'UpdateTime': datetime.datetime(2021, 2, 28, 10, 37, 33, tzinfo=tzlocal()), 'LastAccessTime': datetime.datetime(2020, 9, 10, 22, 27, 24, tzinfo=tzlocal()), 'Retention': 0, 'StorageDescriptor': {'Columns': [{'Name': 'assettypecode', 'Type': 'string'}, {'Name': 'industrysector', 'Type': 'string'}, {'Name': 'securitycode', 'Type': 'char'}, {'Name': 'contractsize', 'Type': 'string'}, {'Name': 'conversionperiodenddate', 'Type': 'string'}, {'Name': 'conversionperiodstartdate', 'Type': 'string'}, {'Name': 'expirationdate', 'Type': 'string'}, {'Name': 'issuercountrycode', 'Type': 'string'}, {'Name': 'issuercountrydesc', 'Type': 'string'}, {'Name': 'originalissuedate', 'Type': 'string'}, {'Name': 'securitynamelong', 'Type': 'string'}, {'Name': 'issueshortname', 'Type': 'string'}, {'Name': 'gicssector', 'Type': 'string'}, {'Name': 'maturitydate', 'Type': 'string'}, {'Name': 'optioncode', 'Type': 'string'}, {'Name': 'optiontypename', 'Type': 'string'}, {'Name': 'paramount', 'Type': 'string'}, {'Name': 'priceindex', 'Type': 'string'}, {'Name': 'countrycoderisk', 'Type': 'string'}, {'Name': 'countrydescrisk', 'Type': 'string'}, {'Name': 'countrycode', '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': {'CrawlerSchemaDeserializerVersion': '1.0', 'CrawlerSchemaSerializerVersion': '1.0', 'UPDATED_BY_CRAWLER': 'security', 'averageRecordSize': '181', 'classification': 'parquet', 'compressionType': 'none', 'objectCount': '5', 'recordCount': '154800', 'sizeKey': '20337230', 'typeOfData': 'file'}, 'StoredAsSubDirectories': False}, 'PartitionKeys': [], 'TableType': 'EXTERNAL_TABLE', 'Parameters': {'CrawlerSchemaDeserializerVersion': '1.0', 'CrawlerSchemaSerializerVersion': '1.0', 'UPDATED_BY_CRAWLER': 'security', 'averageRecordSize': '181', 'classification': 'parquet', 'compressionType': 'none', 'objectCount': '5', 'recordCount': '154800', 'sizeKey': '20337230', 'typeOfData': 'file'}, 'CreatedBy': 'arn:aws:sts::************:assumed-role/glue-role/AWS-Crawler'}, 'ResponseMetadata': {'RequestId': '4c108dd5-***************76ac', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Mon, 01 Mar 2021 06:04:58 GMT', 'content-type': 'application/x-amz-json-1.1', 'contentlength': '3882', 'connection': 'keep-alive', 'x-amzn-requestid': '4c108dd5-*********************676ac'}, 'RetryAttempts': 0}}

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

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

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

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