Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

Boto3 का उपयोग करके AWS ग्लू डेटा कैटलॉग से डेटाबेस में तालिका परिभाषा कैसे प्राप्त करें?

आइए देखें कि कैसे एक उपयोगकर्ता एडब्ल्यूएस ग्लू डेटा कैटलॉग से एक डेटाबेस में रेगुलर एक्सप्रेशन के अनुसार मेल खाने वाली सभी तालिकाओं या कुछ तालिकाओं की परिभाषा को पुनः प्राप्त कर सकता है।

उदाहरण

डेटाबेस में सभी तालिकाओं की तालिका परिभाषा प्राप्त करें 'QA-परीक्षण' और तालिका 'सुरक्षा' . के रूप में , और 'कर्मचारी'

इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम

  • चरण 1: आयात करें boto3 और बोटोकोर अपवादों को संभालने के लिए अपवाद।

  • चरण 2: डेटाबेस_नाम अनिवार्य पैरामीटर है जबकि regular_expression_for_table_name वैकल्पिक पैरामीटर है। यदि उपयोगकर्ता सभी तालिकाओं का विवरण प्राप्त करना चाहता है, तो नियमित अभिव्यक्ति प्रदान करने की कोई आवश्यकता नहीं है। हालांकि, यदि केवल सीमित तालिकाओं को लाने की आवश्यकता है, तो एक नियमित अभिव्यक्ति की आवश्यकता होती है। रेगुलर एक्सप्रेशन लिखते समय सावधान रहें क्योंकि अगर इसे ठीक से नहीं लिखा गया तो परिणाम बदल सकता है।

  • चरण 3: boto3 lib . का उपयोग करके AWS सत्र बनाएं . सुनिश्चित करें कि क्षेत्र_नाम डिफ़ॉल्ट प्रोफ़ाइल में उल्लेख किया गया है। यदि इसका उल्लेख नहीं है, तो सत्र बनाते समय स्पष्ट रूप से क्षेत्र_नाम पास करें।

  • चरण 4: गोंद . के लिए AWS क्लाइंट बनाएं ।

  • चरण 5: अब get_tables फ़ंक्शन का उपयोग करें और डेटाबेस_नाम . पास करें डेटाबेसनाम और regular_expression_for_table_name . के रूप में अभिव्यक्ति पैरामीटर के रूप में।

  • चरण 6: यह किसी दिए गए डेटाबेस में सभी या मिलान वाली तालिकाओं की परिभाषा देता है।

  • चरण 7: कार्य की जाँच करते समय कुछ गलत होने पर सामान्य अपवाद को संभालें।

उदाहरण कोड

निम्न कोड किसी दिए गए डेटाबेस से सभी तालिका परिभाषाओं को पुनः प्राप्त करता है -

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': datetime.datetime(2020, 9, 10, 22, 27, 24, tzinfo=tzlocal()), 'UpdateTime': datetime.datetime(2021, 3, 1, 11, 43, 49, tzinfo=tzlocal()), 'LastAccessTime': datetime.datetime(2020, 9, 10, 22, 27, 24, tzinfo=tzlocal()), 'Retention': 0, 'StorageDescriptor': {'Columns': [{'Name': 'assettypecode', 'Type': 'string'}, {'Name': 'industrysector', 'Type': 'varchar'}, {'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'}, 'VersionId': '2'},
{'Name': 'employee', 'DatabaseName': 'QA-test', 'Owner': 'owner', 'CreateTime': datetime.datetime(2020, 9, 10, 22, 27, 24, tzinfo=tzlocal()), 'UpdateTime': datetime.datetime(2021, 3, 1, 11, 43, 49, tzinfo=tzlocal()), 'LastAccessTime': datetime.datetime(2020, 9, 10, 22, 27, 24, tzinfo=tzlocal()), 'Retention': 0, 'StorageDescriptor': {'Columns': [{'Name': 'assettypecode', 'Type': 'string'}, {'Name': 'industrysector', 'Type': 'varchar'}, {'Name': 'code', 'Type': 'char'}, {'Name': 'size', 'Type': 'string'}, {'Name': 'countrycode', 'Type': 'string'}, {'Name': 'countrydesc', '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': 'employee', 'averageRecordSize': '181', 'classification': 'parquet', 'compressionType': 'none', 'objectCount': '5', 'recordCount': '154800', 'sizeKey': '20337230', 'typeOfData': 'file'}, 'CreatedBy': 'arn:aws:sts::*********:assumed-role/glue-role/AWS-Crawler'}, 'VersionId': '2'}, 'ResponseMetadata': {'RequestId': '431db171-*******************0', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Mon, 01 Mar 2021 06:15:30 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '3916', 'connection': 'keep-alive', 'x-amzn-requestid': '431db171-*****************0'}, 'RetryAttempts': 0}}

  1. एडब्ल्यूएस गोंद डेटा कैटलॉग से तालिका को हटाने के लिए Boto3 का उपयोग कैसे करें?

    समस्या का विवरण - अपने खाते में बनाई गई तालिका को हटाने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें। उदाहरण - आपके खाते में बनाए गए डेटाबेस परीक्षण से एक तालिका सुरक्षा हटाएं। इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करें। च

  1. AWS डेटा कैटलॉग से डेटाबेस को हटाने के लिए Boto3 का उपयोग कैसे करें?

    समस्या का विवरण - अपने खाते में बनाए गए डेटाबेस को हटाने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें। उदाहरण - आपके खाते में बनाए गए डेटाबेस पोर्टफोलियो को हटा दें। इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करें। चरण 2 - पैरा

  1. एडब्ल्यूएस गोंद डेटा कैटलॉग से क्रॉलर को हटाने के लिए Boto3 का उपयोग कैसे करें?

    समस्या का विवरण - अपने खाते में बनाए गए क्रॉलर को हटाने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें। उदाहरण - आपके खाते में बनाए गए क्रॉलर पोर्टफोलियो को हटा दें। इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करें। चरण 2 - क्रॉलर