অ্যাপাচি পিগ ইউডিএফ: পার্ট 3 - স্টোর ফাংশন



এই পোস্টে অ্যাপাচি পিগ ইউডিএফ - স্টোর ফাংশন সম্পর্কে বর্ণনা করা হয়েছে। (অ্যাপাচি পিগ ইউডিএফ: পার্ট 3)। অ্যাপাচি পিগ ইউডিএফ এর স্টোর ফাংশনগুলি একবার দেখুন।

স্টোরফঙ্ক অ্যাবস্ট্রাক্ট ক্লাসে ডেটা সংরক্ষণের জন্য প্রধান পদ্ধতি রয়েছে এবং বেশিরভাগ ব্যবহারের ক্ষেত্রে এটি প্রসারিত করার জন্য পর্যাপ্ত হওয়া উচিত। একটি alচ্ছিক ইন্টারফেস রয়েছে যা বর্ধিত কার্যকারিতা অর্জনের জন্য প্রয়োগ করা যেতে পারে:





স্টোরমেটাডাটা

এই ইন্টারফেসটির স্কিমা এবং পরিসংখ্যান সঞ্চয় করার জন্য মেটাডেটা সিস্টেমগুলির সাথে ইন্টারঅ্যাক্ট করার পদ্ধতি রয়েছে। এই ইন্টারফেসটি isচ্ছিক এবং কেবলমাত্র মেটাডেটা সংরক্ষণের প্রয়োজন হলে তা প্রয়োগ করা উচিত।

স্টোরফঙ্কে যে পদ্ধতিগুলি ওভাররাইড করা দরকার তা নীচে ব্যাখ্যা করা হয়েছে:



জাভা কাস্টিং ডাবল ইন ইন
  • getOutputFormat ():

    স্টোরারের দ্বারা আউটপুট ফর্ম্যাটটি ব্যবহার করার জন্য এই পদ্ধতিটিকে পিগ দ্বারা ডাকা হবে। আউটপুটফর্মেটের পদ্ধতিগুলিকে পিগ একই পদ্ধতিতে এবং মানচিত্র-হ্রাস জাভা প্রোগ্রামে হাদুপের অনুরূপ প্রসঙ্গে ডাকবে। যদি আউটপুটফর্ম্যাটটি হ্যাডোপ প্যাকেজযুক্ত হয় তবে বাস্তবায়নের জন্য org.apache.hadoop.mapreduce এর অধীনে নতুন এপিআই ভিত্তিক একটি ব্যবহার করা উচিত। এটি যদি কাস্টম আউটপুটফর্ম্যাট হয় তবে এটি org.apache.hadoop.mapreduce এর অধীনে নতুন এপিআই ব্যবহার করে প্রয়োগ করা উচিত। আউটপুট ফর্ম্যাটটির চেকআউটপুটস্পেস () পদ্ধতিটি আউটপুটের আউটপুট অবস্থান পরীক্ষা করার জন্য শূকর দ্বারা ডেকে আনা হবে। এই কাজটি যখন কাজ শুরু হবে তখন হাদোপ কল ক্রমের অংশ হিসাবে ডাকা হবে। সুতরাং বাস্তবায়নের বিষয়টি নিশ্চিত হওয়া উচিত যে এই পদ্ধতিটিকে অসঙ্গত পার্শ্ব প্রতিক্রিয়া ছাড়াই একাধিকবার বলা যেতে পারে।

  • সেটস্টোর অবস্থান ():

    এই পদ্ধতিটিকে স্টোরের সাথে স্টোরের অবস্থানের জন্য পিগ বলে। অন্তর্নিহিত আউটপুট ফোমেটে একই তথ্য যোগাযোগ করতে স্টোরকে এই পদ্ধতিটি ব্যবহার করা উচিত। এই পদ্ধতিটিকে পিগ একাধিকবার বলে। প্রয়োগগুলি নোট নিতে হবে যে এই পদ্ধতিটি একাধিকবার বলা হয় এবং একাধিক কলের কারণে কোনও অসঙ্গত পার্শ্ব প্রতিক্রিয়া নেই তা নিশ্চিত করা উচিত।

  • টু রাইট ():

    নতুন এপিআইতে, ডাটা লিখন স্টোরফঙ্কের সরবরাহিত আউটপুট ফর্ম্যাটের মাধ্যমে। রেডিট্রোইরাইটে () স্টোরফঙ্কের সরবরাহিত আউটপুট ফর্ম্যাটের সাথে সম্পর্কিত রেকর্ড রাইটার স্টোরফঙ্কে পাস করা হয়। এরপরে রেকর্ড রাইটারটি পুটনেক্সট () এর প্রয়োগের মাধ্যমে রেকর্ড রাইটার দ্বারা প্রত্যাশিত পদ্ধতিতে ডেটা রেকর্ড উপস্থাপন করে একটি টুপল লিখতে ব্যবহার করা যেতে পারে।

  • পুটনেক্সট ():

    পুটনেক্সট () এর অর্থ পরিবর্তিত হয়নি এবং পিগ রানটাইম দ্বারা পরবর্তী পরবর্তী তথ্য উপাত্ত লিখতে ডাকা হয় - নতুন এপিআইতে, এই পদ্ধতিটি যেখানে বাস্তবায়নটি টুপল আউট লেখার জন্য অন্তর্নিহিত রেকর্ড রাইটার ব্যবহার করবে।

StoreFunc এ ডিফল্ট বাস্তবায়ন:

  • setStoreFuncUDFContextSignature ():

    স্টোরারের কাছে একটি অনন্য স্বাক্ষর প্রেরণের জন্য এই পদ্ধতিটি পিগের সামনে এবং শেষ প্রান্তে উভয়ই ডাকবে। স্বাক্ষরটি ইউডিএফসিএন্টেক্সটে কোনও তথ্য সঞ্চয় করতে ব্যবহার করা যেতে পারে যা স্টোরারের সামনে এবং শেষ প্রান্তে বিভিন্ন পদ্ধতির অনুরোধগুলির মধ্যে সঞ্চয় করতে হবে। StoreFunc এ ডিফল্ট প্রয়োগের একটি খালি শরীর রয়েছে। এই পদ্ধতিটি অন্য যে কোনও পদ্ধতির আগে ডাকা হবে।

  • relToAbsPathforStoreLocation ():

    শূকর রানটাইম স্টোরটিকে কোনও আপেক্ষিক স্টোরের অবস্থানটিকে পরম স্থানে রূপান্তর করতে অনুমতি দেওয়ার জন্য এই পদ্ধতিটি কল করবে। স্টোরফঙ্কে একটি বাস্তবায়ন সরবরাহ করা হয় যা এটি ফাইলসিস্টেম ভিত্তিক অবস্থানগুলির জন্য পরিচালনা করে।

  • চেকশ্মিমা ():

    কোনও স্টোর ফাংশনটি এই ফাংশনটি প্রয়োগ করে তা পরীক্ষা করতে পারে যে ডেটা লেখার জন্য বর্ণিত প্রদত্ত স্কিমা এটি গ্রহণযোগ্য। StoreFunc এ ডিফল্ট প্রয়োগের একটি খালি শরীর রয়েছে। স্টোরলোকেশন () তে কোনও কল করার আগে এই পদ্ধতিটি কল করা হবে।

উদাহরণ বাস্তবায়ন:

উদাহরণস্বরূপ স্টোরার বাস্তবায়ন হ'ল লাইন ডিলিমিটার সহ পাঠ্য ডেটার জন্য স্টোর
‘এবং’ ‘ডিফল্ট ফিল্ড ডিলিমিটার হিসাবে (যা কনস্ট্রাক্টারে আলাদা ফিল্ড ডিলিমেটার পেরিয়ে ওভাররাইড করা যেতে পারে) - এটি পিগের বর্তমান পিগস্টোরেজ স্টোরারের অনুরূপ। বাস্তবায়নটি বিদ্যমান হ্যাডোপ সমর্থিত আউটপুটফর্ম্যাট - টেক্সটআউটপুট ফর্ম্যাটটিকে অন্তর্নিহিত আউটপুট ফোর্ম্যাট হিসাবে ব্যবহার করে।

পাবলিক ক্লাস সিম্পল টেক্সটস্টোরার স্টোরফঙ্ক {সুরক্ষিত রেকর্ড রাইটার লেখককে বাড়িয়ে দেয় = নাল প্রাইভেট বাইট ফিল্ড ডেল = '' প্রাইভেট স্ট্যাটিক ফাইনাল ইন্ট BUFFER_SIZE = 1024 প্রাইভেট স্ট্যাটিক ফাইনাল স্ট্রিং ইউটিএফ 8 = 'ইউটিএফ -8' পাবলিক পিগস্টোরেজ (স্ট্রিং ডিলিমেটার) { ) যদি (ডিলিমিটার.লেন্থ () == 1) {এই.ফিল্ডডেল = (বাইট) ডিলিমিটার.সিআরএট (0)} অন্যথায় যদি (ডিলিমেটার.লেন্থ ()> 1 ডেলিমিটার.charAt (0) == '') {সুইচ ( delimiter.charAt (1)) কেস 't': this.fieldDel = (বাইট) '' ব্রেক কেস 'x': ফিল্ডডেল = Integer.valueOf (delimiter.substring (2), 16) .বাইটভ্যালু () ব্রেক কেস ' u ': this.fieldDel = Integer.valueOf (delimiter.substring (2))। byteValue () ব্রেক ডিফল্ট: নতুন রানটাইম এক্সেকশন (' অজানা ডিলিমিটার '+ ডেলিমিটার) নিক্ষেপ করুন}} অন্যথায় new নতুন রানটাইম এক্সেকশনটি (' পিগস্টোরেজ ডিলিমিটার অবশ্যই হওয়া উচিত) একক অক্ষর ')} te বাইটআরাইআউটপুটস্ট্রিম এমআউট = নতুন বাইটআর্যআউটপুটস্ট্রিম (BUFFER_SIZE) @ ওভাররাইড পাবলিক শূন্য পুটনেক্সট (টিপল চ) আইওএক্সেপশন {ইন্ট এসজি = f.size () এর জন্য (IN i = 0 i)

আমাদের জন্য একটি প্রশ্ন আছে? মন্তব্য বিভাগে তাদের উল্লেখ করুন এবং আমরা আপনার কাছে ফিরে আসব।

সম্পর্কিত পোস্ট:



জাভাতে কীভাবে বাইনারি স্ট্রিংকে দশমিক রূপান্তর করা যায়

অ্যাপাচি পিগ ইউডিএফ: পার্ট 2
অ্যাপাচি পিগ ইউডিএফ: পার্ট 1