ভূমিকা
একটি নির্দিষ্ট ডেটাবেসের নির্দিষ্ট ইউজার-ডিফাইন্ড ফাংশন (UDF) এর বিস্তারিত মেটাডেটা পাওয়ার জন্য get_user_defined_function API ব্যবহার করা হয়।
সমস্যা বিবরণ
পাইথনে boto3 লাইব্রেরি ব্যবহার করে একটি নির্দিষ্ট ফাংশন ডেফিনিশন (উদাহরণ: ডেটাবেস 'employee'-এ 'insert_employee_record') পাওয়া।
অ্যালগরিদম / ধাপসমূহ
- boto3 এবং botocore.exceptions ইম্পোর্ট করুন।
- ফাংশনটি দুটি বাধ্যতামূলক প্যারামিটার নেবে: database_name এবং function_name।
- AWS সেশন এবং Glue ক্লায়েন্ট তৈরি করুন।
glue_client.get_user_defined_function(DatabaseName=database_name, FunctionName=function_name)কল করুন।- রেসপন্সে
UserDefinedFunctionঅবজেক্ট থাকবে। না পেলে এরর থ্রো করবে। - এক্সেপশন হ্যান্ডল করুন।
উদাহরণ কোড
import boto3
from botocore.exceptions import ClientError
def get_function_definition(database_name, function_name):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.get_user_defined_function(
DatabaseName=database_name,
FunctionName=function_name
)
return response
except ClientError as e:
raise Exception("boto3 client error in get_function_definition: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in get_function_definition: " + e.__str__())
a = get_function_definition('employee', 'insert_employee_record')
print(a)
আউটপুট
{
'UserDefinedFunction':{
'FunctionName': 'insert_employee_record',
'DatabaseName': 'employee',
'ClassName': 'InsertEmployee',
'OwnerName': 'string',
'OwnerType': 'USER'|'ROLE'|'GROUP',
'CreateTime': datetime(2021,03,15),
'ResourceUris':[{
'ResourceType': 'JAR'|'FILE'|'ARCHIVE',
'Uri': 'string'
}]
}
}
ব্যাখ্যা
সিঙ্গল ফাংশন ডেফিনিশন রিটার্ন হয় (লিস্ট নয়)।
ফাংশন না পাওয়া গেলে
EntityNotFoundExceptionথ্রো হবে (ClientError হিসেবে ক্যাচ হবে)।UDF গুলো সাধারণত Hive/Spark UDF হিসেবে রেজিস্টার করা হয় (Java/Scala ক্লাস)।