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

AWS ग्लू में मौजूद जॉब के जॉब रन के माध्यम से पेजिंग करने के लिए Boto3 का उपयोग कैसे करें

इस लेख में, हम देखेंगे कि एडब्ल्यूएस गोंद में मौजूद नौकरी के सभी जॉब रन के माध्यम से पेजिंग कैसे करें।

उदाहरण

समस्या कथन: boto3 . का उपयोग करें आपके खाते में बनाए गए एडब्ल्यूएस ग्लू डेटा कैटलॉग से नौकरी के जॉब रन के माध्यम से पेजिनेट करने के लिए पायथन में लाइब्रेरी

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

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

  • चरण 2: अधिकतम_आइटम , पृष्ठ_आकार और शुरुआती_टोकन इस फ़ंक्शन के लिए वैकल्पिक पैरामीटर हैं, जबकि job_name आवश्यक है।

    • अधिकतम_आइटम लौटने के लिए रिकॉर्ड की कुल संख्या को निरूपित करें। यदि उपलब्ध रिकॉर्ड की संख्या> max_items फिर एक नेक्स्टटोकन पेजिनेशन फिर से शुरू करने के जवाब में प्रदान किया जाएगा।

    • पृष्ठ_आकार प्रत्येक पृष्ठ के आकार को दर्शाता है।

    • शुरुआती_टोकन पृष्ठांकित करने में मदद करता है, और यह NextToken . का उपयोग करता है पिछली प्रतिक्रिया से।

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

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

  • चरण 5: एक पेजिनेटर बनाएं ऑब्जेक्ट जिसमें get_job_runs का उपयोग करने वाले सभी क्रॉलर का विवरण होता है

  • चरण 6: पेजिनेट फ़ंक्शन को कॉल करें और max_items . पास करें , पृष्ठ_आकार और शुरुआती_टोकन PaginationConfig . के रूप में पैरामीटर।

  • चरण 7: यह max_size . के आधार पर रिकॉर्ड की संख्या लौटाता है और पृष्ठ_आकार

  • चरण 8: अगर पेजिंग करते समय कुछ गलत हो जाता है तो सामान्य अपवाद को हैंडल करें।

उदाहरण कोड

उपयोगकर्ता खाते में बनाई गई नौकरी के सभी जॉब रन के माध्यम से पेजिनेट करने के लिए निम्न कोड का उपयोग करें -

import boto3
from botocore.exceptions import ClientError

def paginate_through_jobruns(job_name,max_items=None:int,page_size=None:int, starting_token=None:string):
   session = boto3.session.Session()
   glue_client = session.client('glue')
   try:
   paginator = glue_client.get_paginator('get_job_runs')
      response = paginator.paginate(JobName=job_name, PaginationConfig={
         'MaxItems':max_items,
         'PageSize':page_size,
         'StartingToken':starting_token}
      )
   return response
   except ClientError as e:
      raise Exception("boto3 client error in paginate_through_jobruns: " + e.__str__())
   except Exception as e:
      raise Exception("Unexpected error in paginate_through_jobruns: " + e.__str__())
a = paginate_through_crawlers("glue_test_job",1,5)
print(*a)

आउटपुट

{'JobRuns': [
{'Id': 'jr_435b66cfe451adf5fa7c7f914be3c87d199616f52bd13bdd91bb1269f02db705', 'Attempt': 0, 'JobName': ' glue_test_job, 'StartedOn': datetime.datetime(2021, 1, 25, 22, 19, 56, 52000, tzinfo=tzlocal()), 'LastModifiedOn': datetime.datetime(2021, 1, 25, 22, 21, 50, 603000, tzinfo=tzlocal()), 'CompletedOn': datetime.datetime(2021, 1, 25, 22, 21, 50, 603000, tzinfo=tzlocal()), 'JobRunState': 'SUCCEEDED', 'Arguments': {'--additional-python-modules': 'pandas==1.1.5', '--enable-glue-datacatalog': 'true', '--extra-files': 's3://glue/job/test, '--job-bookmark-option': 'job-bookmark-disable', 'step': '0'}, 'PredecessorRuns': [], 'AllocatedCapacity': 2, 'ExecutionTime': 107, 'Timeout': 2880, 'MaxCapacity': 2.0, 'WorkerType': 'G.1X', 'NumberOfWorkers': 2, 'LogGroupName': '/aws-glue/jobs', 'GlueVersion': '2.0'}],
'NextToken': 'eyJleHBpcmF0aW9uIjp7InNlY29uZHMiOjE2MTc0NTQ0NDgsIm5hbm9zIjo2OTUwMDAwMDB9LCJsYXN0RXZhbHVhdGVkS2V5Ijp7ImpvYklkIjp7InMiOiJqXzdlYzIzNTYwOWRkMGVmYjRhNTgyNDU2YWVlZmQ4NmFlMTgwYTAyNDQ3NWY2ODRkMzc4YWFiZDBmYTk1MGJmMDcifSwicnVuSWQiOnsicyI6ImpyXzJjNDFkMmJmMzY1NGZhZGFhYzkzMjU1ZTY0OTkxOTg2YTE0Yjk2MjIyMTRlNDc4ZGNkOWE0ZTY5N2M3MGZmY2YifSwic3RhcnRlZE9uIjp7Im4iOiIxNjExMjA3MjcwODIyIn19fQ==',
'ResponseMetadata': {'RequestId': '1874370e-***********-40d', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Fri, 02 Apr 2021 12:54:08 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '6509', 'connection': 'keep-alive', 'x-amzn-requestid': '1874370e-**************40d'}, 'RetryAttempts': 0}}

  1. AWS ग्लू डेटा कैटलॉग में बुकमार्क की गई नौकरी का विवरण प्राप्त करने के लिए Boto3 का उपयोग कैसे करें?

    उदाहरण - एडब्ल्यूएस गोंद डेटा कैटलॉग में बुकमार्क की गई नौकरी बुक-जॉब का विवरण पुनर्प्राप्त करें। समस्या का विवरण - एडब्ल्यूएस ग्लू डेटा कैटलॉग में बुकमार्क की गई नौकरी के विवरण को पुनः प्राप्त करने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें। इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम चरण

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

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

  1. ग्लू जॉब की स्थिति की जांच करने के लिए Boto3 का उपयोग कैसे करें?

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