Skill

Data Import এবং Export Techniques গাইড ও নোট

Big Data and Analytics - হাইভ (Hive)
377

Hive, Hadoop প্ল্যাটফর্মের ওপর নির্মিত একটি শক্তিশালী ডেটা ওয়্যারহাউজ টুল, যা ডেটা স্টোর এবং বিশ্লেষণের জন্য ব্যাপকভাবে ব্যবহৃত হয়। Hive-এ ডেটা import এবং export করার জন্য বিভিন্ন পদ্ধতি রয়েছে। এই পদ্ধতিগুলো ডেটাকে Hive টেবিলে আনার এবং Hive টেবিল থেকে অন্য সিস্টেমে রপ্তানি করার জন্য ব্যবহৃত হয়। Hive-এ ডেটা ইম্পোর্ট এবং এক্সপোর্ট করার পদ্ধতি বিভিন্ন ডেটা সোর্স এবং ডেস্টিনেশনের সঙ্গে ইন্টিগ্রেটেড থাকে, যেমন HDFS, HBase, এবং অন্যান্য ফাইল ফরম্যাট (CSV, Parquet, Avro ইত্যাদি)।

Data Import Techniques in Hive


১. LOAD Data Command

Hive-এ ডেটা ইম্পোর্ট করার একটি সাধারণ পদ্ধতি হলো LOAD কমান্ড ব্যবহার করা। এটি হাডুপ ফাইল সিস্টেম (HDFS) থেকে Hive টেবিলে ডেটা লোড করতে ব্যবহৃত হয়।

উদাহরণ:

LOAD DATA INPATH '/user/hive/warehouse/employees.csv' INTO TABLE employees;

এখানে, employees.csv ফাইলটি HDFS-এ employees টেবিলের মধ্যে ইম্পোর্ট করা হবে।

  • INPATH: HDFS পাথ যা ফাইলের অবস্থান নির্দেশ করে।
  • INTO TABLE: Hive টেবিলের নাম, যেখানে ডেটা লোড হবে।

২. LOCAL Keyword with LOAD Command

আপনি যদি লোকাল ফাইল সিস্টেম থেকে Hive টেবিলে ডেটা লোড করতে চান, তবে LOCAL কীওয়ার্ড ব্যবহার করতে পারেন। এটি লোকাল ফাইল সিস্টেম থেকে ডেটা ইনপুট হিসেবে Hive টেবিলের মধ্যে লোড করে।

উদাহরণ:

LOAD DATA LOCAL INPATH '/home/user/employees.csv' INTO TABLE employees;

এখানে, লোকাল ফাইল সিস্টেম থেকে employees.csv ফাইলটি Hive টেবিল employees-এ লোড করা হবে।

৩. Hive Import from HBase

HBase হলো Hadoop এর একটি NoSQL ডেটাবেস, এবং Hive HBase থেকে ডেটা ইম্পোর্ট করতে সক্ষম। HBaseStorageHandler ব্যবহার করে Hive-এ HBase টেবিলের ডেটা ইম্পোর্ট করা যায়।

উদাহরণ:

CREATE EXTERNAL TABLE hbase_table (id INT, name STRING)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ('hbase.columns.mapping' = ':key,info:name')
TBLPROPERTIES ('hbase.table.name' = 'hbase_employees');

এই কমান্ডটি HBase টেবিল থেকে ডেটা Hive টেবিলে মডেল করার জন্য ব্যবহার করা হয়।

৪. Using Apache Sqoop for Data Import

Apache Sqoop ব্যবহার করে আপনি RDBMS থেকে Hive টেবিলের মধ্যে ডেটা ইম্পোর্ট করতে পারেন। Sqoop একটি জনপ্রিয় টুল যা RDBMS যেমন MySQL, PostgreSQL, Oracle ইত্যাদি থেকে Hadoop ইকোসিস্টেমে ডেটা লোড করতে সাহায্য করে।

উদাহরণ:

sqoop import --connect jdbc:mysql://localhost/employees --table employees --hive-import --create-hive-table --hive-table hive_employees

এই কমান্ডটি employees টেবিল থেকে MySQL ডেটাবেস থেকে Hive টেবিল hive_employees-এ ডেটা লোড করবে।


Data Export Techniques in Hive


১. INSERT OVERWRITE DIRECTORY Command

Hive-এ ডেটা এক্সপোর্ট করার জন্য INSERT OVERWRITE DIRECTORY কমান্ড ব্যবহার করা হয়। এটি Hive টেবিলের ডেটা HDFS ডিরেক্টরিতে আউটপুট হিসেবে সরবরাহ করে।

উদাহরণ:

INSERT OVERWRITE DIRECTORY '/user/hive/warehouse/output_dir'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
SELECT * FROM employees;

এখানে, employees টেবিলের ডেটা HDFS ডিরেক্টরি /user/hive/warehouse/output_dir-এ CSV ফরম্যাটে এক্সপোর্ট করা হবে।

২. EXPORT Command

EXPORT কমান্ড ব্যবহার করে Hive টেবিলের ডেটা HDFS থেকে RDBMS বা অন্য ফাইল সিস্টেমে এক্সপোর্ট করা যায়। এটি Hive টেবিলের ডেটা হাডুপ ক্লাস্টার থেকে অন্য কোথাও রপ্তানি করতে ব্যবহৃত হয়।

উদাহরণ:

EXPORT TABLE employees TO '/user/hive/warehouse/employees_export';

এখানে, employees টেবিলের ডেটা HDFS-এ /user/hive/warehouse/employees_export ফোল্ডারে এক্সপোর্ট করা হবে।

৩. Using Apache Sqoop for Data Export

যেভাবে Sqoop দিয়ে ডেটা ইম্পোর্ট করা যায়, তেমনি এটি Hive থেকে RDBMS-এ ডেটা এক্সপোর্ট করতে ব্যবহৃত হতে পারে।

উদাহরণ:

sqoop export --connect jdbc:mysql://localhost/employees --table employees --export-dir /user/hive/warehouse/employees --input-fields-terminated-by ',' --num-mappers 1

এখানে, Hive টেবিল employees থেকে ডেটা MySQL ডেটাবেসে employees টেবিলে এক্সপোর্ট করা হবে।


উপসংহার


Hive-এ ডেটা ইম্পোর্ট এবং এক্সপোর্ট করার জন্য বিভিন্ন পদ্ধতি এবং টুলস রয়েছে, যা আপনার ডেটা ম্যানেজমেন্ট এবং বিশ্লেষণ কার্যক্রমকে আরও সহজ এবং দক্ষ করে তোলে। আপনি Hive-এর LOAD কমান্ড, INSERT OVERWRITE DIRECTORY, এবং EXPORT কমান্ড ব্যবহার করে ডেটা ইম্পোর্ট এবং এক্সপোর্ট করতে পারেন। এছাড়া, Apache Sqoop ব্যবহার করে RDBMS এবং Hive-এর মধ্যে ডেটা ট্রান্সফার করা যায়। Hive-এর ডেটা ইম্পোর্ট এবং এক্সপোর্ট পদ্ধতিগুলো বড় ডেটা প্রসেসিং এবং বিশ্লেষণ কার্যক্রমে সহায়ক।

Content added By

Local এবং HDFS থেকে Data Load করা (LOAD DATA, INSERT INTO)

284

Hive ডেটা লোডিংয়ের জন্য বিভিন্ন পদ্ধতি সরবরাহ করে, যাতে আপনি বিভিন্ন ফাইল সিস্টেম থেকে (যেমন, Local এবং HDFS) ডেটা আপনার Hive টেবিলের মধ্যে লোড করতে পারেন। দুটি প্রধান কমান্ড যা ডেটা লোড করতে ব্যবহৃত হয় তা হলো LOAD DATA এবং INSERT INTO। এই কমান্ড দুটি ব্যবহারের মাধ্যমে Hive-এ ডেটা লোড করা যেতে পারে, কিন্তু এগুলির ব্যবহার এবং কার্যকারিতা কিছুটা ভিন্ন।

LOAD DATA কমান্ড


LOAD DATA কমান্ড ব্যবহার করে আপনি Local ফাইল সিস্টেম বা HDFS থেকে Hive টেবিলের মধ্যে ডেটা লোড করতে পারেন। এই কমান্ডটি সাধারণত যখন আপনার ডেটা ফাইল কোন নির্দিষ্ট লোকাল ডিরেক্টরি বা HDFS থেকে Hive টেবিলে সরিয়ে আনতে চান, তখন ব্যবহৃত হয়।

LOAD DATA কমান্ডের সিনট্যাক্স:

LOAD DATA [LOCAL] INPATH '<path>' [OVERWRITE] INTO TABLE <table_name>;
  • LOCAL: যদি আপনি Local ফাইল সিস্টেম থেকে ডেটা লোড করতে চান, তবে এই অপশনটি ব্যবহার করতে হবে। যদি আপনি LOCAL না ব্যবহার করেন, তবে ডেটা সরাসরি HDFS থেকে লোড হবে।
  • INPATH: এখানে আপনি লোড করার জন্য ফাইল বা ডিরেক্টরির পথ প্রদান করবেন। এই পথটি Local বা HDFS-এ থাকতে পারে।
  • OVERWRITE: এই অপশনটি ব্যবহার করলে, যদি টেবিলটি আগে থেকেই ডেটা থাকে, তাহলে পূর্বের ডেটা মুছে দিয়ে নতুন ডেটা লোড হবে।
  • INTO TABLE: এটি সেই টেবিলের নাম যেখানে আপনি ডেটা লোড করতে চান।

LOAD DATA উদাহরণ:

Local ফাইল সিস্টেম থেকে Hive টেবিলে ডেটা লোড করার উদাহরণ:

LOAD DATA LOCAL INPATH '/home/user/data.csv' INTO TABLE sales;

এটি /home/user/data.csv ফাইলটি Local ফাইল সিস্টেম থেকে Hive টেবিল sales এ লোড করবে।

HDFS থেকে ডেটা লোড করার উদাহরণ:

LOAD DATA INPATH '/user/hive/warehouse/sales.csv' INTO TABLE sales;

এটি /user/hive/warehouse/sales.csv ফাইলটি HDFS থেকে Hive টেবিল sales এ লোড করবে।


INSERT INTO কমান্ড


INSERT INTO কমান্ডটি Hive টেবিলে ডেটা সন্নিবেশ করার জন্য ব্যবহৃত হয়। এটি সাধারণত তখন ব্যবহৃত হয় যখন আপনি একটি SELECT কুয়েরি থেকে ডেটা নিয়ে Hive টেবিলে ইনসার্ট করতে চান অথবা অন্য কোনো টেবিল থেকে ডেটা কপি করতে চান।

INSERT INTO কমান্ডের সিনট্যাক্স:

INSERT INTO TABLE <table_name> [PARTITION (part_col1=value1, part_col2=value2 ...)] 
SELECT <column_list> FROM <source_table> WHERE <condition>;
  • INTO TABLE: ডেটা ইনসার্ট করার জন্য যে টেবিলটি নির্দিষ্ট করবেন।
  • PARTITION: যদি আপনি কোনো নির্দিষ্ট পার্টিশন ব্যবহার করতে চান, তবে এখানে পার্টিশন কলাম ও এর মান প্রদান করবেন। এটি পার্টিশনড টেবিলের জন্য।
  • SELECT: এটি সেই কুয়েরি যা থেকে ডেটা সংগ্রহ করা হবে। সাধারণত অন্য টেবিল বা ফাইল থেকে ডেটা বের করে নতুন টেবিলে সন্নিবেশ করা হয়।

INSERT INTO উদাহরণ:

একটি টেবিল থেকে অন্য টেবিলে ডেটা ইনসার্ট করার উদাহরণ:

INSERT INTO TABLE sales SELECT * FROM temp_sales WHERE amount > 1000;

এটি temp_sales টেবিল থেকে সেই সমস্ত রেকর্ড যেখানে amount > 1000 শর্ত পূর্ণ হয়, তা sales টেবিলে ইনসার্ট করবে।

পার্টিশনড টেবিলে ডেটা ইনসার্ট করার উদাহরণ:

INSERT INTO TABLE sales PARTITION (year='2024', month='12') 
SELECT * FROM temp_sales WHERE date >= '2024-12-01';

এটি temp_sales টেবিল থেকে 2024-12-01 তারিখের পরবর্তী ডেটা নিয়ে sales টেবিলের year='2024' এবং month='12' পার্টিশনে ইনসার্ট করবে।


LOAD DATA এবং INSERT INTO এর মধ্যে পার্থক্য


বৈশিষ্ট্যLOAD DATAINSERT INTO
ডেটা সোর্সLocal অথবা HDFS ফাইল সিস্টেম থেকে ডেটা লোড করা হয়।টেবিল বা কুয়েরি থেকে ডেটা ইনসার্ট করা হয়।
পারফরম্যান্সদ্রুত, কারণ এটি ফাইলের ডেটা সরাসরি টেবিলে কপি করে।একটু ধীর হতে পারে, কারণ কুয়েরি বা সিলেক্ট অপারেশন যুক্ত থাকে।
ডেটা যোগ করার পদ্ধতিডেটা সরাসরি টেবিলে লোড করা হয়।কুয়েরি ফলাফল টেবিলে সন্নিবেশ করা হয়।
টেবিলের স্ট্রাকচারটেবিলের কাঠামো এবং পার্টিশন ঠিক থাকতে হবে।টেবিলের কাঠামো এবং পার্টিশন কলাম অটোমেটিকভাবে বিবেচিত হয়।
ডেটা সংশোধনকোনো ডেটা সংশোধন সম্ভব নয়; ডেটা লোড করার সময় পরিবর্তন করা যায়।ইনসার্ট করার সময় ডেটা প্রসেসিং বা পরিবর্তন করা সম্ভব।

উপসংহার


Hive-এ LOAD DATA এবং INSERT INTO দুটি গুরুত্বপূর্ণ কমান্ড যা ডেটা লোড করার জন্য ব্যবহৃত হয়। LOAD DATA কমান্ডটি ফাইল সিস্টেম থেকে ডেটা সরাসরি Hive টেবিলে লোড করার জন্য উপযোগী, যেখানে INSERT INTO সাধারণত কুয়েরি থেকে ডেটা সন্নিবেশ করতে ব্যবহৃত হয়। LOAD DATA সাধারণত দ্রুত, তবে INSERT INTO-তে কুয়েরি অপ্টিমাইজেশন এবং ডেটা প্রসেসিংয়ের ক্ষমতা থাকে।

Content added By

Data Export করা (INSERT OVERWRITE)

226

Hive-এ INSERT OVERWRITE কমান্ডটি একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ব্যবহৃত হয় একটি টেবিল বা ফাইলের মধ্যে ডেটা এক্সপোর্ট বা পুনঃলিখন করতে। এটি বিশেষভাবে উপকারী যখন আপনি একটি টেবিলের মধ্যে থাকা ডেটাকে সম্পূর্ণরূপে পরিবর্তন বা এক্সপোর্ট করতে চান। এই কমান্ডের মাধ্যমে ডেটা নতুন করে লোড বা স্টোর করা হয় এবং পূর্ববর্তী ডেটা ওভাররাইট হয়ে যায়। এটি Hive টেবিলের ডেটা পুনঃলিখন বা নির্দিষ্ট ফাইল লোকেশনে ডেটা এক্সপোর্টের জন্য ব্যবহৃত হয়।

INSERT OVERWRITE এর ব্যবহার


INSERT OVERWRITE কমান্ডটি একটি টেবিল বা লোকেশনকে নতুন ডেটা দিয়ে পূর্ণ করে। এটি পূর্ববর্তী ডেটাকে ওভাররাইট করে, এবং শুধুমাত্র নতুন ডেটা টেবিল বা ফাইলের মধ্যে লেখা হয়। এটি বিভিন্ন কেসে ব্যবহার করা যেতে পারে, যেমন:

  1. একটি টেবিলের মধ্যে ডেটা আপডেট বা রিপ্লেস করতে।
  2. ডেটা পুনরায় স্টোর করার জন্য (যেমন, কোন ফাইল সিস্টেমে ডেটা এক্সপোর্ট করতে)।
  3. আউটপুট ফাইল বা লোকেশনে ডেটা এক্সপোর্ট করার জন্য।

INSERT OVERWRITE এর সাধারণ সিনট্যাক্স


INSERT OVERWRITE [LOCAL] DIRECTORY '<path>'
SELECT <column1>, <column2>, ...
FROM <table_name>
WHERE <condition>;

এখানে:

  • [LOCAL]: এই অপশনটি ফাইল সিস্টেমের লোকাল ডিস্কে ডেটা লিখতে ব্যবহৃত হয়। যদি আপনি HDFS (Hadoop Distributed File System) ব্যবহার করতে চান, তাহলে এই অপশনটি বাদ দিতে হবে।
  • DIRECTORY '': এখানে আপনি আউটপুট ফাইল বা ডিরেক্টরির পাথ নির্দিষ্ট করতে পারবেন যেখানে ডেটা এক্সপোর্ট হবে।
  • SELECT , , ...: এখানে আপনি যেসব কলাম ডেটা এক্সপোর্ট করতে চান, সেগুলি উল্লেখ করবেন।
  • FROM <table_name>: এখানে আপনি যে টেবিল থেকে ডেটা এক্সপোর্ট করতে চান, তার নাম উল্লেখ করবেন।

INSERT OVERWRITE ব্যবহার উদাহরণ


১. টেবিলের ডেটা অন্য একটি টেবিলের মধ্যে এক্সপোর্ট করা

ধরা যাক, আপনার একটি sales টেবিল আছে এবং আপনি এর ডেটা একটি নতুন টেবিল sales_backup-এ এক্সপোর্ট করতে চান।

INSERT OVERWRITE TABLE sales_backup
SELECT * FROM sales;

এখানে sales টেবিলের সমস্ত ডেটা sales_backup টেবিলে এক্সপোর্ট হয়ে যাবে এবং যদি sales_backup টেবিলে কোনো ডেটা থাকে, তা ওভাররাইট হবে।

২. HDFS-এ ডেটা এক্সপোর্ট করা

ধরা যাক, আপনি sales টেবিলের ডেটা HDFS-এ নির্দিষ্ট লোকেশনে এক্সপোর্ট করতে চান।

INSERT OVERWRITE DIRECTORY '/user/hive/warehouse/sales_backup'
SELECT * FROM sales;

এখানে sales টেবিলের সমস্ত ডেটা /user/hive/warehouse/sales_backup লোকেশনে HDFS ফাইল সিস্টেমে এক্সপোর্ট হবে।

৩. একটি কন্ডিশন ব্যবহার করে ডেটা এক্সপোর্ট করা

আপনি একটি নির্দিষ্ট শর্তের মাধ্যমে ডেটা এক্সপোর্ট করতে পারেন। উদাহরণস্বরূপ, যদি আপনি শুধু 2024 সালের ডেটা এক্সপোর্ট করতে চান:

INSERT OVERWRITE DIRECTORY '/user/hive/warehouse/sales_2024'
SELECT * FROM sales WHERE year = 2024;

এখানে, কেবলমাত্র 2024 সালের ডেটা /user/hive/warehouse/sales_2024 লোকেশনে এক্সপোর্ট হবে।


INSERT OVERWRITE এর অন্যান্য ব্যবহার


১. ফাইল ফরম্যাটের ব্যবহার

INSERT OVERWRITE কমান্ডের মাধ্যমে ডেটা এক্সপোর্টের সময় আপনি ডেটার ফরম্যাট নির্ধারণ করতে পারেন, যেমন Text, Parquet, ORC, Avro ইত্যাদি।

উদাহরণ:

INSERT OVERWRITE DIRECTORY '/user/hive/warehouse/sales_backup'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
SELECT * FROM sales;

এখানে ডেটা CSV ফরম্যাটে (কমা দ্বারা পৃথক) এক্সপোর্ট হবে।

২. বিভিন্ন ফাইল সিস্টেমের মধ্যে এক্সপোর্ট

আপনি ডেটা HDFS থেকে Local File System এ অথবা একে অপরের মধ্যে স্থানান্তর করতে পারেন। এর জন্য LOCAL অপশনটি ব্যবহার করা হয়।

উদাহরণ:

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/sales_backup'
SELECT * FROM sales;

এটি sales টেবিলের সমস্ত ডেটা লোকাল ফাইল সিস্টেমে /tmp/sales_backup লোকেশনে এক্সপোর্ট করবে।


INSERT OVERWRITE এর সতর্কতা


  • ওভাররাইট: INSERT OVERWRITE কমান্ডটি পূর্ববর্তী ডেটা মুছে ফেলে এবং নতুন ডেটা লেখে, সুতরাং ভুল করে ব্যবহার করলে গুরুত্বপূর্ণ ডেটা হারিয়ে যেতে পারে। তাই এটি ব্যবহারের আগে সতর্ক হওয়া উচিত।
  • ফাইল সিস্টেম: যখন HDFS বা অন্য কোনো ফাইল সিস্টেমে ডেটা এক্সপোর্ট করা হয়, তখন আপনি নিশ্চিত হতে হবে যে নির্দিষ্ট লোকেশনটি আগে থেকে বিদ্যমান এবং এতে লেখার অনুমতি রয়েছে।

উপসংহার


Hive-এ INSERT OVERWRITE কমান্ডটি ডেটা এক্সপোর্ট এবং পুনরায় স্টোর করার জন্য একটি শক্তিশালী টুল। এটি টেবিলের মধ্যে থাকা ডেটাকে ওভাররাইট করে নতুন ডেটা লেখার সুযোগ দেয়, যা বিশেষত ডেটা পুনর্লিখন বা স্থানান্তর করার জন্য উপকারী। ডেটা এক্সপোর্ট করার সময় বিভিন্ন ফাইল ফরম্যাট এবং লোকেশন ব্যবহার করা যায়, যা ডেটা প্রক্রিয়াকরণকে আরও নমনীয় ও কার্যকরী করে তোলে।

Content added By

External Data Sources থেকে Data Fetch করা

316

Apache Hive প্রধানত Hadoop ইকোসিস্টেমে কাজ করে এবং এর মাধ্যমে ডেটা বিশ্লেষণ করা হয়। তবে অনেক সময় আমরা External Data Sources থেকে ডেটা আনার প্রয়োজনীয়তা অনুভব করি। Hive ব্যবহারকারীদের বিভিন্ন External Data Sources থেকে ডেটা আনার জন্য সুবিধা প্রদান করে। এগুলির মধ্যে রয়েছে HBase, MySQL, JDBC, CSV, Parquet, Avro, এবং আরও অনেক ফাইল ফরম্যাট। Hive বিভিন্ন ধরনের ফাইল ফরম্যাট এবং ডেটা স্টোরেজ সিস্টেমের সাথে ইন্টিগ্রেট হতে সক্ষম, যা Hadoop-এর ক্ষমতা আরও বৃদ্ধি করে।

External Data Sources থেকে Data Fetch করার জন্য Hive এর ব্যবহার


১. HBase থেকে Data Fetch করা

HBase হল একটি ডিস্ট্রিবিউটেড NoSQL ডেটাবেস যা সাধারণত প্রক্রিয়াজাত ডেটা সংরক্ষণ এবং দ্রুত অ্যাক্সেসের জন্য ব্যবহৃত হয়। Hive ব্যবহারকারীদের HBase-এ সংরক্ষিত ডেটা Hive External Table এর মাধ্যমে সহজেই অ্যাক্সেস করতে সাহায্য করে। HBase থেকে ডেটা নিয়ে Hive-এ বিশ্লেষণ করতে, Hive HBase Storage Handler ব্যবহার করে।

HBase থেকে Data Fetch করার উদাহরণ
CREATE EXTERNAL TABLE hbase_table(
    id INT,
    name STRING,
    age INT)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf:name,cf:age")
TBLPROPERTIES ("hbase.table.name" = "hbase_data");

এই কুয়েরি HBase থেকে ডেটা টেনে নিয়ে Hive-এর একটি এক্সটার্নাল টেবিল তৈরি করে।


২. Relational Databases (RDBMS) থেকে Data Fetch করা

Hive JDBC ব্যবহার করে MySQL, PostgreSQL, Oracle ইত্যাদি রিলেশনাল ডেটাবেস থেকে ডেটা টেনে আনতে পারে। Hive-এর JDBC কনেক্টর ব্যবহার করে আপনি SQL-অনুরূপ কুয়েরি চালিয়ে বিভিন্ন রিলেশনাল ডেটাবেস থেকে ডেটা সংগ্রহ করতে পারবেন।

MySQL থেকে Data Fetch করার উদাহরণ
CREATE EXTERNAL TABLE mysql_table(
    id INT,
    name STRING,
    salary FLOAT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED BY 'org.apache.hadoop.hive.jdbc.storagehandler.JdbcStorageHandler'
WITH SERDEPROPERTIES (
  "serialization.lib"="org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
  "serialization.encoding"="UTF-8")
TBLPROPERTIES (
  "hive.sql.database"="jdbc:mysql://localhost:3306/dbname",
  "hive.sql.username"="root",
  "hive.sql.password"="password",
  "hive.sql.driver"="com.mysql.jdbc.Driver",
  "hive.sql.table"="employee");

এই কুয়েরি MySQL ডেটাবেস থেকে employee টেবিলের ডেটা Hive-এ আনবে।


৩. CSV এবং অন্যান্য ফাইল ফরম্যাট থেকে Data Fetch করা

Hive এক্সটার্নাল টেবিল ব্যবহার করে CSV, JSON, Parquet, ORC, Avro এবং অন্যান্য বিভিন্ন ফাইল ফরম্যাট থেকে ডেটা ইম্পোর্ট করতে সক্ষম। এটি Hadoop এর HDFS-এ স্টোর করা ফাইলগুলো থেকে ডেটা সহজে সংগ্রহ করতে সাহায্য করে। Hive এই ফাইলগুলোর জন্য বিভিন্ন Serde (Serializer/Deserializer) ব্যবহার করে ডেটাকে প্রক্রিয়া করে।

CSV ফাইল থেকে Data Fetch করার উদাহরণ
CREATE EXTERNAL TABLE csv_table(
    id INT,
    name STRING,
    age INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'hdfs://localhost:9000/user/hive/data/csv_data';

এই কুয়েরি HDFS-এ থাকা csv_data নামক ফোল্ডার থেকে CSV ফাইলের ডেটা Hive-এ লোড করবে।


৪. Parquet এবং Avro ফরম্যাট থেকে Data Fetch করা

Parquet এবং Avro হল কলাম-অরিয়েন্টেড ফাইল ফরম্যাট যা বড় ডেটাসেটের জন্য পারফরম্যান্স এবং সঞ্চয়ের দিক থেকে বেশ কার্যকর। Hive এই ফরম্যাট থেকে ডেটা ফেচ করতে পারে, যা দ্রুত ডেটা প্রক্রিয়াকরণের জন্য সাহায্য করে।

Parquet ফরম্যাট থেকে Data Fetch করার উদাহরণ
CREATE EXTERNAL TABLE parquet_table(
    id INT,
    name STRING,
    salary FLOAT)
STORED AS PARQUET
LOCATION 'hdfs://localhost:9000/user/hive/data/parquet_data';

এই কুয়েরি Hive-এ Parquet ফাইল থেকে ডেটা লোড করবে।

Avro ফরম্যাট থেকে Data Fetch করার উদাহরণ
CREATE EXTERNAL TABLE avro_table(
    id INT,
    name STRING,
    salary FLOAT)
STORED AS AVRO
LOCATION 'hdfs://localhost:9000/user/hive/data/avro_data';

এই কুয়েরি Hive-এ Avro ফরম্যাটের ডেটা ফেচ করবে।


Hive External Data Sources এর উপকারিতা


  • বিভিন্ন ডেটা সোর্সের সাথে ইন্টিগ্রেশন: Hive ব্যবহারকারীরা বিভিন্ন ধরনের ডেটা সোর্স যেমন HBase, MySQL, CSV, Avro, Parquet ইত্যাদি থেকে সহজেই ডেটা ফেচ করতে পারে।
  • বড় ডেটাসেটের দ্রুত বিশ্লেষণ: Hive বড় পরিসরের ডেটাসেট দ্রুত প্রক্রিয়া করতে সক্ষম, বিশেষত Hadoop এবং HDFS ব্যবহার করার ফলে।
  • কাস্টমাইজড ডেটা ইনপুট: বিভিন্ন ফরম্যাটের ফাইল বা রিলেশনাল ডেটাবেসের ডেটাকে এক্সটার্নাল টেবিলের মাধ্যমে সহজেই Hive-এ লোড করা সম্ভব।
  • এগজিস্টিং ডেটা সোর্সে ডেটার অ্যাক্সেস: Hive ডেটা ফেচ করার সময় আপনাকে উৎস ডেটাবেস বা ফাইল সিস্টেমে কোনো ডেটা কপি করতে হয় না, এটি এক্সটার্নাল সোর্স থেকেই ডেটা অ্যাক্সেস করতে সক্ষম।

উপসংহার


Hive ব্যবহারকারীদের বিভিন্ন External Data Sources থেকে ডেটা ফেচ করার জন্য শক্তিশালী এবং নমনীয় পদ্ধতি প্রদান করে। Hive External Tables-এর মাধ্যমে আপনি সহজেই HBase, RDBMS, CSV, Parquet, Avro, এবং অন্যান্য ফাইল ফরম্যাট থেকে ডেটা ইম্পোর্ট করতে পারেন। এটি Hadoop এবং Hive-এর ক্ষমতা কাজে লাগিয়ে বড় ডেটাসেটের উপর দ্রুত বিশ্লেষণ করতে সহায়তা করে।

Content added By

Data Compression এবং Encoding Techniques

386

Hive হল একটি ওপেন সোর্স ডেটাবেস ম্যানেজমেন্ট সিস্টেম যা Hadoop প্ল্যাটফর্মে তৈরি। এটি বড় আকারের ডেটা স্টোরেজ এবং বিশ্লেষণের জন্য ব্যবহৃত হয়। Hive এ Data Compression এবং Encoding টেকনিকগুলো ডেটা স্টোরেজের পারফরম্যান্স উন্নত করতে এবং ডিস্ক স্পেস বাঁচাতে সহায়ক। এই টেকনিকগুলো ডেটার স্টোরেজ এবং ট্রান্সফার প্রক্রিয়াকে আরও দ্রুত এবং দক্ষ করে তোলে।

Data Compression in Hive


Data Compression হল একটি পদ্ধতি যার মাধ্যমে ডেটার আকার ছোট করা হয় যাতে এটি কম ডিস্ক স্পেস ব্যবহার করে এবং দ্রুত স্টোরেজ বা ট্রান্সফার হয়। Hive-এ ডেটা কম্প্রেশন সাধারণত HDFS (Hadoop Distributed File System)-এ সঞ্চিত ডেটা কম্প্রেস করার জন্য ব্যবহৃত হয়।

Hive এ Data Compression এর উপকারিতা

  • ডিস্ক স্পেস সংরক্ষণ: কম্প্রেশন ডেটার আকার কমিয়ে দেয়, যার ফলে ডিস্ক স্পেস বাঁচানো যায়।
  • ডেটা ট্রান্সফার দ্রুত করা: কম্প্রেসড ডেটা নেটওয়ার্কে পাঠানো সহজ এবং দ্রুত হয়।
  • পারফরম্যান্স বৃদ্ধি: কম্প্রেসড ডেটা প্রসেসিং আরও দ্রুত হতে পারে, কারণ কম আকারের ডেটা প্রসেস করতে কম সময় লাগে।

Hive এ Data Compression কনফিগারেশন

Hive-এ ডেটা কম্প্রেশন কনফিগার করার জন্য কিছু সেটিংস ব্যবহৃত হয়। এগুলির মধ্যে একটি সাধারণ কনফিগারেশন হল file format এর জন্য কম্প্রেশন নির্বাচন করা।

উদাহরণ: Hive এ কম্প্রেশন সেট করতে আপনি hive-site.xml ফাইলে hive.exec.compress.output প্রপার্টি পরিবর্তন করতে পারেন। এছাড়াও, Hive কুয়েরির মাধ্যমে কম্প্রেশন ফরম্যাট নির্ধারণ করা যায়।

<property>
    <name>hive.exec.compress.output</name>
    <value>true</value>
</property>

<property>
    <name>hive.exec.compress.intermediate</name>
    <value>true</value>
</property>

<property>
    <name>mapreduce.output.fileoutputformat.compress</name>
    <value>true</value>
</property>

Hive এ Data Compression Formats

Hive এ বিভিন্ন ধরনের কম্প্রেশন ফরম্যাট সমর্থিত, যেগুলি বিভিন্ন কম্প্রেশন স্ট্রাটেজি এবং কার্যকারিতার ওপর নির্ভর করে:

  1. Snappy: এটি দ্রুত কম্প্রেশন এবং ডিকম্প্রেশন সমর্থন করে এবং সাধারণত বড় ডেটাসেটের জন্য ব্যবহৃত হয়।
  2. Gzip: এটি উচ্চতর কম্প্রেশন রেট প্রদান করে তবে এটি ধীর ডিকম্প্রেশন করতে পারে।
  3. Bzip2: এটি Gzip-এর তুলনায় আরও ভালো কম্প্রেশন রেট দেয়, তবে ধীর ডিকম্প্রেশন হয়।
  4. LZO: এটি একটি দ্রুত এবং উচ্চ কম্প্রেশন রেট প্রদানকারী ফরম্যাট, যা বিশেষত Hadoop এর জন্য উপযোগী।

উদাহরণ:

CREATE TABLE sales_data (
    transaction_id INT,
    amount DOUBLE,
    transaction_date STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
TBLPROPERTIES ("compression"="SNAPPY");

Data Encoding in Hive


Data Encoding হল একটি পদ্ধতি যার মাধ্যমে ডেটার প্রতিনিধিত্বকে আরও দক্ষ ও সংকুচিত করা হয়। Hive-এ Data Encoding প্রধানত Columnar Storage Formats (যেমন Parquet এবং ORC) ব্যবহার করে।

Hive এ Data Encoding এর উপকারিতা

  • ডেটার সাইজ কমানো: এনকোডিং ডেটার সাইজ কমাতে সহায়ক হতে পারে, বিশেষ করে যখন টেবিলের কিছু কলাম অনেক ডুপ্লিকেট ভ্যালু ধারণ করে।
  • পারফরম্যান্স বৃদ্ধি: এনকোডিং ব্যবহারে কুয়েরি পারফরম্যান্স উন্নত হয়, কারণ কম ডেটা স্টোর এবং প্রসেস করা হয়।
  • ফাস্ট ডিকোডিং: এনকোডেড ডেটা দ্রুত ডিকোড করা যায়, যা ডেটা প্রসেসিং এর সময় কমায়।

Hive এ Data Encoding Techniques

Hive-এ প্রধানত দুটি এনকোডিং পদ্ধতি ব্যবহৃত হয়:

  1. Dictionary Encoding: এই পদ্ধতিতে একটি কলামের জন্য ডেটার একটি লিস্ট তৈরি করা হয় এবং প্রতিটি ডেটার জন্য একটি ইনডেক্স মান দেওয়া হয়। এটি ডেটা পুনরাবৃত্তি কমায় এবং ডেটার আকার ছোট করে।
  2. Delta Encoding: এই পদ্ধতিতে একটি কলামের মানের পরিবর্তন হিসাব করা হয়, অর্থাৎ ধারাবাহিক বা সংলগ্ন মানগুলির মধ্যে পার্থক্য সংরক্ষণ করা হয়।

Hive Columnar Storage Formats

Hive এ প্রধান Columnar Storage Formats হল ORC (Optimized Row Columnar) এবং Parquet, যেগুলি ডেটা এনকোডিংয়ের জন্য খুবই কার্যকরী।

  1. ORC (Optimized Row Columnar):
    • ORC ফাইল ফরম্যাটে ডেটা কম্প্রেশন এবং এনকোডিং করা হয়, যার ফলে খুব ভালো পারফরম্যান্স পাওয়া যায়।
    • এটি ডেটাকে column-wise স্টোর করে এবং ডেটার প্রতিটি কলামের জন্য আলাদা আলাদা কম্প্রেশন এবং এনকোডিং ব্যবহার করতে পারে।
  2. Parquet:
    • Parquet একটি columnar ফাইল ফরম্যাট যা ডেটা এনকোডিং এবং কম্প্রেশনের জন্য অত্যন্ত কার্যকরী।
    • এটি Hive, Spark, Impala, এবং অন্যান্য Big Data টুলের জন্য ব্যাপকভাবে ব্যবহৃত হয়।

উদাহরণ:

CREATE TABLE sales_data (
    transaction_id INT,
    amount DOUBLE,
    transaction_date STRING
)
STORED AS ORC;

Hive Data Compression এবং Encoding এর মধ্যে পার্থক্য


ফিচারData CompressionData Encoding
উদ্দেশ্যডিস্ক স্পেস সংরক্ষণ এবং ডেটার আকার কমানোডেটার প্রতিনিধিত্ব কমানো এবং কার্যকরী করা
ফরম্যাটGzip, Snappy, Bzip2, LZODictionary Encoding, Delta Encoding
পারফরম্যান্স প্রভাবডেটা কম্প্রেসড হওয়ার কারণে ট্রান্সফার ও স্টোরেজ দ্রুত হয়ডেটা প্রসেসিং এবং কুয়েরি পারফরম্যান্স উন্নত হয়
প্রধান ব্যবহারের ক্ষেত্রডিস্ক স্পেস এবং ডেটা ট্রান্সফারের জন্যডেটা এনকোডিং এবং কলামার স্টোরেজ ফরম্যাটের জন্য
কেন ব্যবহার করা হয়?ডিস্ক স্পেস কমানোর জন্যদ্রুত ডেটা প্রসেসিং এবং কম্প্রেশন রেট বাড়ানোর জন্য

উপসংহার


Hive-এ Data Compression এবং Encoding Techniques হল কার্যকরী পদ্ধতি যা ডেটার স্টোরেজ এবং পারফরম্যান্স উন্নত করতে সহায়তা করে। কম্প্রেশন ডিস্ক স্পেস সংরক্ষণ এবং ডেটার ট্রান্সফার গতি বাড়ায়, এবং এনকোডিং টেকনিকগুলো ডেটাকে আরও কম্প্যাক্ট এবং কার্যকরী করে তোলে। Hive-এ বিভিন্ন ফরম্যাট যেমন ORC, Parquet, এবং Snappy ইত্যাদি ব্যবহার করে ডেটার আকার কমানো এবং প্রক্রিয়াকরণ দ্রুত করা যায়। Data Compression এবং Encoding সমন্বয়ে ডেটা ম্যানেজমেন্ট এবং বিশ্লেষণ আরও দ্রুত, কার্যকরী এবং দক্ষ হয়।

Content added By
Promotion

Are you sure to start over?

Loading...