ভূমিকা
AWS Glue ক্রলার (Crawler) আপনার ডেটা সোর্স স্ক্যান করে মেটাডেটা বানায়। ক্রলারকেอটোমেটিকালি নির্দিষ্ট সময়ে চালানোর জন্য শিডিউলার (scheduler) ব্যবহার করা হয়। এই নিবন্ধে Boto3 ব্যবহার করে একটি ক্রলারের শিডিউলার আপডেট করার পদ্ধতি বর্ণনা করা হয়েছে।
সমস্যা বিবরণ
পাইথনে boto3 লাইব্রেরি ব্যবহার করে একটি ক্রলারের শিডিউলার আপডেট করা।
অ্যালগরিদম / ধাপসমূহ
- boto3 এবং botocore.exceptions ইম্পোর্ট করুন।
- ফাংশনটি দুটি বাধ্যতামূলক প্যারামিটার নেবে: crawler_name এবং scheduler।
- scheduler ফরম্যাট:
cron(cron_expression)। উদাহরণ:cron(15 12 * * ? *)মানে প্রতিদিন UTC ১২:১৫-এ চালাবে। - AWS সেশন এবং Glue ক্লায়েন্ট তৈরি করুন (রিজন নিশ্চিত করুন)।
glue_client.update_crawler_schedule()কল করুন প্যারামিটার:CrawlerName=crawler_name,Schedule=scheduler।- রেসপন্স মেটাডেটা রিটার্ন করবে এবং ক্রলারের শিডিউল স্টেট আপডেট হবে।
- এক্সেপশন হ্যান্ডল করুন।
উদাহরণ কোড
import boto3
from botocore.exceptions import ClientError
def update_scheduler_of_a_crawler(crawler_name, scheduler):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.update_crawler_schedule(
CrawlerName=crawler_name,
Schedule=scheduler
)
return response
except ClientError as e:
raise Exception("boto3 client error in update_scheduler_of_a_crawler: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in update_scheduler_of_a_crawler: " + e.__str__())
# উদাহরণ: "Data Dimension" ক্রলারকে প্রতিদিন ১২:১৫ UTC-তে চালানোর জন্য শিডিউল সেট করা
print(update_scheduler_of_a_crawler("Data Dimension", "cron(15 12 * * ? *)"))
আউটপুট
{'ResponseMetadata': {'RequestId': '73e50130-*****************8e', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sun, 28 Mar 2021 07:26:55 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '2', 'connection': 'keep-alive', 'x-amzn-requestid': '73e50130-***************8e'}, 'RetryAttempts': 0}}
ব্যাখ্যা
Cron এক্সপ্রেশন
cron(15 12 * * ? *)এখানে মিনিট=১৫, ঘণ্টা=১২, প্রতিদিন, প্রতিমাস, সপ্তাহের যেকোনো দিন, যেকোনো বছর বোঝায়।AWS Glue-এ Cron এক্সপ্রেশন Quartz cron ফরম্যাট অনুসরণ করে (৬ ফিল্ড: মিনিট, ঘণ্টা, দিন-অফ-মাস, মাস, ডে-অফ-উইক, বছর)।
আউটপুটে
HTTPStatusCode: 200সফল আপডেট নির্দেশ করছে।
দ্রষ্টব্য
যদি ক্রলারটি ইতিমধ্যে রানিং অবস্থায় থাকে, তবে শিডিউল আপডেট করা যাবে না। সেক্ষেত্রে SchedulerRunningException থ্রো হবে।