সমস্যা বিবৃতি: boto3 ব্যবহার করুন আপনার অ্যাকাউন্টে তৈরি করা AWS Glue Data Catalog থেকে একটি টেবিলের সারণী সংস্করণের মাধ্যমে পেজিনেট করতে পাইথনে লাইব্রেরি
এই সমস্যা সমাধানের জন্য অ্যাপ্রোচ/অ্যালগরিদম
-
ধাপ 1: boto3 আমদানি করুন৷ এবং বোটোকোর ব্যতিক্রমগুলি পরিচালনা করার জন্য ব্যতিক্রম৷
-
ধাপ 2: সর্বোচ্চ_আইটেম , পৃষ্ঠা_আকার এবং স্টার্টিং_টোকেন এই ফাংশনের জন্য ঐচ্ছিক প্যারামিটার, যখন ডাটাবেস_নাম এবং টেবিল_নাম প্রয়োজন।
-
সর্বোচ্চ_আইটেম ফেরত দেওয়ার জন্য মোট রেকর্ড সংখ্যা নির্দেশ করুন। যদি উপলব্ধ রেকর্ডের সংখ্যা> সর্বোচ্চ_আইটেম তারপর একটি NextToken পৃষ্ঠা সংখ্যা পুনঃসূচনা করার প্রতিক্রিয়াতে প্রদান করা হবে।
-
পৃষ্ঠা_আকার প্রতিটি পৃষ্ঠার আকার বোঝায়।
-
শুরু_টোকেন পেজিনেট করতে সাহায্য করে এবং এটি NextToken ব্যবহার করে পূর্ববর্তী প্রতিক্রিয়া থেকে।
-
-
ধাপ 3: boto3 lib ব্যবহার করে একটি AWS সেশন তৈরি করুন . অঞ্চলের_নাম নিশ্চিত করুন ডিফল্ট প্রোফাইলে উল্লেখ করা আছে। যদি এটি উল্লেখ না থাকে, তাহলে স্পষ্টভাবে অঞ্চল_নাম পাস করুন সেশন তৈরি করার সময়।
-
পদক্ষেপ 4: আঠার জন্য একটি AWS ক্লায়েন্ট তৈরি করুন।
-
ধাপ 5: একটি পেজিনেটর তৈরি করুন৷ বস্তু যা get_table_versions ব্যবহার করে একটি টেবিলের সমস্ত টেবিল সংস্করণের বিবরণ ধারণ করে
-
ধাপ 6: পেজিনেট ফাংশনকে কল করুন এবং ডেটাবেস_নামকে ডেটাবেস-নাম, টেবিলনামকে টেবিল_নাম, সর্বোচ্চ_আইটেম হিসাবে পাস করুন , পৃষ্ঠা_আকার এবং স্টার্টিং_টোকেন প্যাজিনেশন কনফিগারেশন হিসেবে প্যারামিটার
-
পদক্ষেপ 7: এটি max_size এর উপর ভিত্তি করে রেকর্ডের সংখ্যা প্রদান করে এবং পৃষ্ঠা_আকার .
-
ধাপ 8: পেজিন করার সময় কিছু ভুল হলে জেনেরিক ব্যতিক্রমটি পরিচালনা করুন।
উদাহরণ কোড
ব্যবহারকারীর অ্যাকাউন্ট −
-এ তৈরি করা টেবিলের টেবিল সংস্করণের মাধ্যমে পেজিনেট করতে নিম্নলিখিত কোডটি ব্যবহার করুনimport boto3 from botocore.exceptions import ClientError def paginate_through_table_versions(database_name, table_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_table_versions') response = paginator.paginate(DatabaseName=database_name, TableName=table_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_table_versions: " + e.__str__()) except Exception as e: raise Exception("Unexpected error in paginate_through_table_versions: " + e.__str__()) a = paginate_through_table_versions("test_db","qa_table",2,5) print(*a)
আউটপুট
{'TableVersions': [ {'Table': {'Name': 'qa_table', 'DatabaseName': 'test_db', 'Owner': 'owner', 'CreateTime': datetime.datetime(2018, 9, 24, 20, 43, 3, tzinfo=tzlocal()), 'UpdateTime': datetime.datetime(2018, 9, 24, 20, 43, 3, tzinfo=tzlocal()), 'LastAccessTime': datetime.datetime(2018, 9, 24, 20, 43, 3, tzinfo=tzlocal()), 'Retention': 0, 'StorageDescriptor': {'Columns': [{'Name': 'accounnumber', 'Type': 'int'}, {'Name': 'country', 'Type': 'string'}, {'Name': 'currency', 'Type': 'string'}, {'Name': 'date', 'Type': 'bigint'}, {'Name': 'securitynumber', 'Type': 'string'}, {'Name': 'crossxreferencexcode', 'Type': 'string'}, {'Name': 'securityxdescriptionxxlongx1x', 'Type': 'string'}, 'Location': 's3://qa/success/', 'InputFormat': 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat', 'OutputFormat': 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat', 'Compressed': False, 'NumberOfBuckets': -1, 'SerdeInfo': {'SerializationLibrary': },'VersionId': '0'}], 'ResponseMetadata': {'RequestId': '931c99f8-c473-4421-9f0f-1ca33b313e67', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Fri, 02 Apr 2021 13:29:04 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '16718', 'connection': 'keep-alive', 'x-amzn-requestid': '931c99f8-c473-4421-9f0f-1ca33b313e67'}, 'RetryAttempts': 0}}