Incremental Import একটি গুরুত্বপূর্ণ ফিচার যা Apache Sqoop-এ ব্যবহৃত হয়। এটি ব্যবহৃত হয় যখন ডেটাবেস থেকে সময়ের সাথে পরিবর্তিত (আপডেট হওয়া) বা নতুন যোগ হওয়া ডেটা নিয়মিতভাবে হাডুপ সিস্টেমে ইম্পোর্ট করতে হয়। অর্থাৎ, পুরো ডেটাসেটটি বারবার ইম্পোর্ট না করে, শুধুমাত্র নতুন বা পরিবর্তিত ডেটা ইম্পোর্ট করার প্রক্রিয়াটি হচ্ছে Incremental Import।
Incremental Import কী?
Incremental Import এর মাধ্যমে Sqoop ডেটাবেস থেকে শুধুমাত্র সেই রেকর্ডগুলো ইম্পোর্ট করে, যা একটি নির্দিষ্ট সময়ের মধ্যে পরিবর্তিত বা নতুনভাবে যোগ করা হয়েছে। এটি বিশেষভাবে দরকারি যখন ডেটাবেসে অত্যন্ত বড় আকারে ডেটা থাকে এবং পুরো ডেটাসেট ইম্পোর্ট করা সময়সাপেক্ষ বা অব্যবহারিক হয়ে পড়ে।
এই প্রক্রিয়াটি সাধারণত দুটি ধরনের হয়:
- Append Mode:
এই মোডে, Sqoop শুধুমাত্র নতুন ডেটা (যেগুলো পূর্বে ইম্পোর্ট করা হয়নি) ইম্পোর্ট করে। এটি সেসব রেকর্ডের উপর কাজ করে, যেগুলি নির্দিষ্ট সময়সীমার মধ্যে ডেটাবেসে যোগ করা হয়েছে। এখানে, কোনো আগের রেকর্ড আপডেট হয় না, শুধু নতুন রেকর্ডগুলোই ইম্পোর্ট করা হয়। - Lastmodified Mode:
এই মোডে, Sqoop পরিবর্তিত বা নতুন ডেটা ইম্পোর্ট করে, কিন্তু এখানে কেবলমাত্র সেই রেকর্ডগুলো ইম্পোর্ট করা হয়, যেগুলোর মধ্যে কোনো পরিবর্তন ঘটেছে বা নতুনভাবে যোগ করা হয়েছে। এটি বিশেষত তখন ব্যবহৃত হয় যখন রেকর্ডগুলোর মধ্যে একটি টাইমস্ট্যাম্প কলাম থাকে, যা পরিবর্তনের সময় বা তারিখ ট্র্যাক করে।
Incremental Import কীভাবে কাজ করে?
Incremental Import কাজ করতে, আপনি মূলত --incremental অপশন ব্যবহার করেন। এতে দুটি প্রধান পদ্ধতি রয়েছে:
- Append Mode:
- এখানে, প্রতিবার ইম্পোর্ট করার সময়, Sqoop শুধুমাত্র নতুন রেকর্ডগুলি খুঁজে বের করে এবং ইম্পোর্ট করে।
- উদাহরণস্বরূপ, একটি কলাম হতে পারে যা প্রতিটি রেকর্ডের যোগ হওয়ার তারিখ বা সময় ট্র্যাক করে। Sqoop এই কলামের মাধ্যমে নতুন ডেটা ইম্পোর্ট করবে।
- Lastmodified Mode:
- এই পদ্ধতিতে, Sqoop একটি নির্দিষ্ট টাইমস্ট্যাম্প কলাম বা একটি "last modified" টাইমস্ট্যাম্প কলাম চেক করে, যার মাধ্যমে এটি শুধু পরিবর্তিত বা নতুন রেকর্ডগুলি খুঁজে বের করে।
এটা নির্ভর করে আপনি যে কলামটি ব্যবহার করবেন তার উপর, যেমন:
- last_update_time: এই কলামের মাধ্যমে প্রতিবার পরিবর্তিত বা আপডেট হওয়া রেকর্ড ইম্পোর্ট করা হবে।
Incremental Import এর জন্য একটি উদাহরণ কমান্ড
ধরা যাক, আমরা MySQL থেকে শুধুমাত্র পরিবর্তিত ডেটা ইম্পোর্ট করতে চাই:
sqoop import \
--connect jdbc:mysql://localhost:3306/database_name \
--username user_name --password password \
--table target_table \
--incremental lastmodified \
--check-column last_update_time \
--last-value '2024-01-01 00:00:00' \
--target-dir /user/hadoop/data
এখানে:
- --incremental lastmodified: এটি
lastmodifiedমোডে Incremental Import নির্ধারণ করে। - --check-column last_update_time: এখানে
last_update_timeকলামটি ব্যবহার করা হচ্ছে যা পরিবর্তিত রেকর্ডের সময় ট্র্যাক করে। - --last-value '2024-01-01 00:00:00': এই মানটি নির্দিষ্ট করে দেয় যে, পূর্ববর্তী ইম্পোর্টের পরবর্তী সময় থেকে কী পরিমাণ ডেটা ইম্পোর্ট করা হবে।
কেন Incremental Import প্রয়োজন?
১. পারফরম্যান্সের উন্নতি:
যখন ডেটাবেসে বিশাল পরিমাণ ডেটা থাকে, পুরো ডেটাসেটটি ইম্পোর্ট করলে সময় ও রিসোর্স বেশি লাগবে। Incremental Import এর মাধ্যমে শুধুমাত্র নতুন বা পরিবর্তিত ডেটা ইম্পোর্ট করা হয়, ফলে পারফরম্যান্স অনেক উন্নত হয় এবং কম রিসোর্স ব্যবহার হয়।
২. রিয়েল-টাইম ডেটা সিঙ্ক্রোনাইজেশন:
যদি আপনাকে নিয়মিত ডেটাবেসের সাথে হাডুপ সিস্টেম সিঙ্ক্রোনাইজ করতে হয়, তবে Incremental Import খুবই উপকারী। এতে আপনি নতুন বা পরিবর্তিত ডেটা নিয়মিতভাবে ইনপুট করতে পারবেন, যা রিয়েল-টাইম বিশ্লেষণ সহজ করে তোলে।
৩. স্টোরেজ এবং ব্যান্ডউইথ সাশ্রয়:
ডেটার বড় আকারের ইম্পোর্ট করতে গেলে স্টোরেজ এবং ব্যান্ডউইথ প্রয়োজন হতে পারে। Incremental Import ব্যবহারে আপনি শুধুমাত্র প্রয়োজনীয় ডেটা ইম্পোর্ট করে ব্যান্ডউইথ এবং স্টোরেজের সাশ্রয় করতে পারেন।
৪. সময় সাশ্রয়:
সম্পূর্ণ ডেটাসেট পুনরায় ইম্পোর্ট না করে, শুধু নতুন বা পরিবর্তিত রেকর্ডগুলিই ইম্পোর্ট করার ফলে, সময়ের সাশ্রয় হয়।
সারাংশ
Incremental Import একটি কার্যকরী বৈশিষ্ট্য যা Apache Sqoop-এ ব্যবহৃত হয় যখন রিলেশনাল ডাটাবেস থেকে শুধুমাত্র নতুন বা পরিবর্তিত ডেটা Hadoop সিস্টেমে ইম্পোর্ট করতে হয়। এটি পুরো ডেটাসেট বারবার ইম্পোর্ট করার পরিবর্তে শুধুমাত্র প্রয়োজনীয় ডেটা স্থানান্তর করতে সহায়তা করে, যা পারফরম্যান্স উন্নত করে, সময় এবং রিসোর্স সাশ্রয়ী হয়। Incremental Import ব্যবহারে ডেটার সিঙ্ক্রোনাইজেশন সহজ হয় এবং রিয়েল-টাইম বিশ্লেষণ সম্ভব হয়।
Read more