Apache Sqoop ব্যবহার করে আপনি সহজেই রিলেশনাল ডাটাবেস থেকে Hadoop-এর HDFS (Hadoop Distributed File System), Hive, HBase ইত্যাদি সিস্টেমে ডেটা ইম্পোর্ট করতে পারেন। এটি সাধারণত দুটি পদ্ধতিতে করা হয়: সরাসরি একটি টেবিল থেকে ডেটা ইম্পোর্ট করা বা একটি কাস্টম SQL কুয়েরি ব্যবহার করে ডেটা ইম্পোর্ট করা।
টেবিল থেকে ডেটা ইম্পোর্ট করা
আপনি যদি একটি সম্পূর্ণ টেবিল থেকে ডেটা ইম্পোর্ট করতে চান, তবে আপনি sqoop import কমান্ড ব্যবহার করতে পারেন। এই পদ্ধতিতে আপনি ডেটাবেসের টেবিলের সমস্ত ডেটা Hadoop-এ ইম্পোর্ট করতে পারবেন।
কমান্ডের কাঠামো:
sqoop import --connect <JDBC_URL> --username <username> --password <password> --table <table_name> --target-dir <hdfs_directory>
উদাহরণ:
ধরা যাক, আপনার MySQL ডাটাবেসে employees নামের একটি টেবিল রয়েছে, এবং আপনি এটি HDFS-এ ইম্পোর্ট করতে চান। তাহলে কমান্ডটি হবে:
sqoop import --connect jdbc:mysql://localhost:3306/mydatabase --username root --password root123 --table employees --target-dir /user/hadoop/employees
এই কমান্ডের মাধ্যমে employees টেবিলের সমস্ত ডেটা HDFS-এর /user/hadoop/employees ডিরেক্টরিতে ইম্পোর্ট হবে।
SQL কুয়েরি ব্যবহার করে ডেটা ইম্পোর্ট করা
আপনি যদি শুধুমাত্র টেবিলের একটি নির্দিষ্ট অংশ বা কাস্টম কুয়েরি থেকে ডেটা ইম্পোর্ট করতে চান, তবে --query অপশন ব্যবহার করতে হবে। এতে আপনি একটি কাস্টম SQL কুয়েরি ব্যবহার করে ডেটা ইম্পোর্ট করতে পারবেন।
কমান্ডের কাঠামো:
sqoop import --connect <JDBC_URL> --username <username> --password <password> --query "<SQL_QUERY> WHERE <conditions> AND \$CONDITIONS" --target-dir <hdfs_directory> --split-by <column_name>
$CONDITIONS হল একটি বিশেষ প্লেসহোল্ডার যা Sqoop ব্যবহৃত পার্টিশনিং কন্ডিশন হিসেবে কাজ করে।
উদাহরণ:
ধরা যাক, আপনার MySQL ডাটাবেসে employees টেবিল রয়েছে, এবং আপনি শুধু salary ৫০০০০ এর বেশি এমন ডেটা ইম্পোর্ট করতে চান। কমান্ডটি হবে:
sqoop import --connect jdbc:mysql://localhost:3306/mydatabase --username root --password root123 --query "SELECT * FROM employees WHERE salary > 50000 AND \$CONDITIONS" --target-dir /user/hadoop/high_salary_employees --split-by employee_id
এখানে:
--queryদ্বারা কাস্টম SQL কুয়েরি ব্যবহার করা হয়েছে।\$CONDITIONSSqoop দ্বারা স্বয়ংক্রিয়ভাবে যুক্ত করা হবে যাতে ডেটা সঠিকভাবে পার্টিশন করা যায়।--split-byঅপশনটি দিয়ে পার্টিশন কলাম নির্বাচন করা হয়, যা ইম্পোর্টের গতি উন্নত করতে সাহায্য করে।
অতিরিক্ত অপশনস
ইম্পোর্ট ফাইলের ফরম্যাট:
আপনি ডেটা ইম্পোর্টের ফাইল ফরম্যাটও নির্ধারণ করতে পারেন। উদাহরণস্বরূপ,--as-avrodatafileব্যবহার করলে ডেটা Avro ফরম্যাটে ইম্পোর্ট হবে।sqoop import --connect jdbc:mysql://localhost:3306/mydatabase --username root --password root123 --table employees --target-dir /user/hadoop/employees_avro --as-avrodatafileকলাম নির্দিষ্ট করা:
আপনি যদি শুধুমাত্র নির্দিষ্ট কিছু কলাম ইম্পোর্ট করতে চান, তবে--columnsঅপশন ব্যবহার করতে পারেন।sqoop import --connect jdbc:mysql://localhost:3306/mydatabase --username root --password root123 --table employees --columns "employee_id, name, salary" --target-dir /user/hadoop/employees_columns
সারাংশ
Sqoop-এর মাধ্যমে আপনি রিলেশনাল ডাটাবেস থেকে Hadoop সিস্টেমে ডেটা ইম্পোর্ট করতে পারেন দুটি প্রধান পদ্ধতিতে: একটি সম্পূর্ণ টেবিল থেকে এবং একটি কাস্টম SQL কুয়েরি ব্যবহার করে। SQL কুয়েরি ব্যবহার করে আপনি ডেটার নির্দিষ্ট অংশ বা শর্ত অনুযায়ী ডেটা ইম্পোর্ট করতে পারবেন। --query অপশন এবং --split-by অপশন ব্যবহার করলে ইম্পোর্ট প্রক্রিয়া দ্রুত ও কার্যকরী হয়।
Read more