समस्या का विवरण - ग्लू जॉब चलाने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें और स्थिति प्राप्त करें कि यह सफल हुआ या असफल। उदाहरण के लिए, कार्य चलाएं run_s3_file_job और इसे स्थिति प्राप्त करें।
इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम
चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करें।
चरण 2 - job_name अनिवार्य पैरामीटर है, जबकि तर्क फ़ंक्शन में वैकल्पिक पैरामीटर है। कुछ नौकरियां चलाने के लिए तर्क लेती हैं। उस स्थिति में, तर्कों को तानाशाही के रूप में पारित किया जा सकता है।
उदाहरण के लिए:तर्क ={'arguments1' ='value1', 'arguments2' ='value2'}
अगर नौकरी तर्क नहीं लेती है, तो बस job_name पास करें।
चरण 3 - boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं। सुनिश्चित करें कि डिफ़ॉल्ट प्रोफ़ाइल में क्षेत्र_नाम का उल्लेख किया गया है। यदि इसका उल्लेख नहीं है, तो सत्र बनाते समय स्पष्ट रूप से क्षेत्र_नाम पास करें।
चरण 4 - गोंद के लिए AWS क्लाइंट बनाएं।
चरण 5 - अब start_job_run फ़ंक्शन का उपयोग करें और यदि आवश्यक हो तो JobName और तर्कों को पास करें।
चरण 6 - एक बार कार्य शुरू होने पर, यह job_run_id . प्रदान करता है कार्य के मेटाडेटा के साथ।
चरण 7 - फ़ंक्शन का उपयोग करें get_job_run और पैरामीटर पास करें RunId पिछले समारोह के परिणाम से। यह स्थिति के बारे में शब्दकोश देता है।
चरण 8 - अब, नौकरी की विशिष्ट स्थिति प्राप्त करें। यदि कार्य पूरा नहीं हुआ तो स्थिति चालू हो सकती है अन्यथा सफल/विफल।
चरण 9 - कार्य की जाँच करते समय कुछ गलत होने पर सामान्य अपवाद को संभालें।
उदाहरण
मौजूदा ग्लू जॉब को चलाने और स्थिति प्राप्त करने के लिए निम्न कोड का उपयोग करें -
import boto3 from botocore.exceptions import ClientError def run_glue_job_get_status(job_name, arguments = {}): session = boto3.session.Session() glue_client = session.client('glue') try: job_run_id = glue_client.start_job_run(JobName=job_name, Arguments=arguments) status_detail = glue_client.get_job_run(JobName=job_name, RunId = job_run_id.get("JobRunId")) status = status_detail.get("JobRun").get("JobRunState") return status except ClientError as e: raise Exception( "boto3 client error in run_glue_job_get_status: " + e.__str__()) except Exception as e: raise Exception( "Unexpected error in run_glue_job_get_status: " + e.__str__()) #Get status 1st time print(run_glue_job_get_status("run_s3_file_job")) #Get status 2nd time after waiting time.sleep(10) print(run_glue_job_get_status("run_s3_file_job"))
आउटपुट
##Get status 1st time Running #Get status 2nd time after waiting SUCCEEDED