Skill

Data Types এবং File Formats গাইড ও নোট

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

Hive, Hadoop এর একটি অংশ, যা SQL-এর মতো কুয়েরি ভাষা ব্যবহার করে ডেটা বিশ্লেষণ করতে সহায়তা করে। Hive বিভিন্ন ধরনের Data Types এবং File Formats সমর্থন করে, যা ডেটার সঠিক ম্যানেজমেন্ট এবং প্রক্রিয়াকরণে সহায়তা করে। Hive-এ সঠিক ডেটা টাইপ এবং ফাইল ফরম্যাট নির্বাচন করার মাধ্যমে ডেটার গতি এবং কার্যকারিতা বৃদ্ধি করা সম্ভব।

Hive Data Types


Hive বিভিন্ন ধরনের ডেটা টাইপ সমর্থন করে, যা মূলত Primitive Types এবং Complex Types এ বিভক্ত।

Primitive Data Types:

Primitive ডেটা টাইপগুলি সাধারণত একটি একক মান ধারণ করে। Hive-এ মোট ৭টি প্রধান primitive ডেটা টাইপ রয়েছে:

  1. INT: পূর্ণসংখ্যা, সাধারণত ৪ বাইট।
    • উদাহরণ: 123
  2. BIGINT: বড় পূর্ণসংখ্যা, ৮ বাইটে সংরক্ষিত।
    • উদাহরণ: 123456789
  3. STRING: স্ট্রিং ডেটা, যা অক্ষরগুলির যেকোনো সিকোয়েন্স ধারণ করতে পারে।
    • উদাহরণ: 'John Doe'
  4. FLOAT: ভেস্বাল মান (4 বাইট)।
    • উদাহরণ: 3.14
  5. DOUBLE: ভেস্বাল মান (8 বাইট)।
    • উদাহরণ: 3.14159
  6. BOOLEAN: সত্য বা মিথ্যা (True/False) মান।
    • উদাহরণ: TRUE
  7. TIMESTAMP: সময় এবং তারিখ, yyyy-MM-dd HH:mm:ss ফরম্যাটে।
    • উদাহরণ: '2024-12-17 15:30:00'
  8. DECIMAL: উচ্চ নির্ভুলতার জন্য মান, যেমন আর্থিক হিসাবের ক্ষেত্রে ব্যবহৃত হয়।
    • উদাহরণ: 100.50

Complex Data Types:

Complex Data Types এমন ডেটা টাইপ যা একাধিক মান ধারণ করতে পারে। Hive-এ এই ডেটা টাইপগুলো রয়েছে:

  1. ARRAY: একধরনের মানের একটি তালিকা।
    • উদাহরণ: ARRAY<INT>['1', '2', '3']
  2. MAP: কিপেয়ার (key-value pair) আকারে ডেটা।
    • উদাহরণ: MAP<STRING, INT>{'key1': 1, 'key2': 2}
  3. STRUCT: বিভিন্ন ডেটা টাইপের গ্রুপ। এটি ডেটার একটি সেট ধারণ করতে পারে।
    • উদাহরণ: STRUCT<STRING, INT>('John', 30)
  4. UNIONTYPE: বিভিন্ন ডেটা টাইপের মানের সমন্বয়।
    • উদাহরণ: UNIONTYPE<STRING, INT> → এটি স্ট্রিং বা ইন্টিজারের যে কোনো একটি মান ধারণ করতে পারে।

Hive File Formats


Hive বিভিন্ন ধরনের ফাইল ফরম্যাট সমর্থন করে, যা ডেটার সঞ্চয়ন এবং পারফরম্যান্সের ওপর গুরুত্বপূর্ণ প্রভাব ফেলে। সাধারণভাবে ব্যবহৃত কয়েকটি প্রধান ফাইল ফরম্যাট:

1. Text File Format:

Text ফাইল হলো Hive-এ সবচেয়ে সাধারণ ফাইল ফরম্যাট। এটি সাধারণভাবে CSV বা TSV (Tab Separated Values) ফরম্যাটে ব্যবহৃত হয়, যেখানে প্রতিটি রেকর্ড নতুন লাইনে থাকে এবং ফিল্ডগুলো স্পেস, কমা বা ট্যাব দ্বারা আলাদা করা হয়।

  • বৈশিষ্ট্য: সহজ, তবে কম কার্যকরী, বিশেষত বড় ডেটাসেটের জন্য।
  • ফাইল এক্সটেনশন: .txt, .csv

2. SequenceFile:

SequenceFile ফাইল ফরম্যাট একটি binary file format, যা মূলত ডেটা সিঙ্ক্রোনাইজড এবং কম্প্রেসড ভাবে সংরক্ষণ করতে ব্যবহৃত হয়।

  • বৈশিষ্ট্য: এটি map-reduce-এ দ্রুত ডেটা প্রসেসিং সহায়তা করে এবং ডেটাকে কম্প্রেস করে রাখে।
  • ফাইল এক্সটেনশন: .seq

3. ORC (Optimized Row Columnar):

ORC ফাইল ফরম্যাট একটি columnar storage ফরম্যাট যা ডেটার সঞ্চয় এবং পারফরম্যান্স অপটিমাইজ করতে সহায়তা করে। ORC বিশেষভাবে ডিজাইন করা হয়েছে যাতে এটি ডেটার সাইজ কমায় এবং দ্রুত কুয়েরি প্রসেসিং নিশ্চিত করে।

  • বৈশিষ্ট্য: উচ্চতর কম্প্রেশন রেট এবং দ্রুত কুয়েরি এক্সিকিউশন।
  • ফাইল এক্সটেনশন: .orc

4. Parquet:

Parquet হল একটি columnar storage ফরম্যাট, যা Hive এবং অন্যান্য বিগ ডেটা টুলস যেমন Spark, Impala ইত্যাদির সঙ্গে খুবই কার্যকরী। এটি বিশেষভাবে অ্যাক্সেস প্যাটার্ন ভিত্তিক ডেটা সঞ্চয় করে, এবং কম্প্রেশন ও স্কেলিংয়ের জন্য অপটিমাইজড।

  • বৈশিষ্ট্য: দ্রুত এবং কম্প্রেশন উচ্চ, ডেটার জন্য অত্যন্ত কার্যকরী।
  • ফাইল এক্সটেনশন: .parquet

5. Avro:

Avro একটি row-based storage ফরম্যাট যা সাধারণত ডেটা ট্রান্সপোর্টের জন্য ব্যবহৃত হয়। এটি স্কিমা সহ ডেটা সংরক্ষণ করতে সক্ষম এবং খুব কার্যকরী ট্রান্সপোর্ট ফরম্যাট হিসেবে কাজ করে।

  • বৈশিষ্ট্য: সহজ ডেটা ট্রান্সফার এবং দ্রুত পার্সিং।
  • ফাইল এক্সটেনশন: .avro

6. RCFile (Record Columnar File):

RCFile হল একটি পুরনো columnar ফাইল ফরম্যাট যা Hive-এ ডেটা সঞ্চয়ের জন্য ব্যবহৃত হত। এটি row-based এবং column-based মেশানো স্টোরেজ ব্যবহার করে।

  • বৈশিষ্ট্য: ভালো কম্প্রেশন এবং দ্রুত কুয়েরি এক্সিকিউশন, তবে আধুনিক ফরম্যাটগুলির তুলনায় কম জনপ্রিয়।
  • ফাইল এক্সটেনশন: .rcfile

উপসংহার


Hive একটি শক্তিশালী ডেটা বিশ্লেষণ প্ল্যাটফর্ম যা বিভিন্ন Data Types এবং File Formats সমর্থন করে। Primitive এবং Complex Types ডেটা সংরক্ষণের জন্য কার্যকরী উপায় প্রদান করে, যেখানে File Formats ডেটা সঞ্চয়ের কার্যকারিতা এবং পারফরম্যান্স বাড়াতে সাহায্য করে। ORC, Parquet, এবং Avro ইত্যাদি ফরম্যাটগুলি উচ্চ কম্প্রেশন এবং দ্রুত কুয়েরি প্রসেসিং নিশ্চিত করে, যা বড় ডেটাসেটের জন্য অত্যন্ত গুরুত্বপূর্ণ। সঠিক Data Types এবং File Formats নির্বাচন করে, Hive এর কার্যকারিতা এবং পারফরম্যান্স আরও উন্নত করা সম্ভব।

Content added By

Hive এর Built-in Data Types (Primitive এবং Complex Types)

419

Hive, একটি SQL-অনুরূপ কুয়েরি ভাষা ব্যবহার করে Hadoop প্ল্যাটফর্মে ডেটা প্রক্রিয়া ও বিশ্লেষণ করার জন্য তৈরি। Hive বিভিন্ন ধরনের Data Types সমর্থন করে, যা Primitive Types এবং Complex Types-এ ভাগ করা যায়। এই ডেটা টাইপগুলি Hive টেবিলের কলামগুলিতে ডেটা সংরক্ষণ এবং কুয়েরি করার জন্য ব্যবহৃত হয়।

Primitive Data Types


Primitive Data Types হল মৌলিক ডেটা টাইপ, যেগুলি শুধুমাত্র একক মান ধারণ করতে পারে। Hive-এ সাধারণত যে Primitive Data Types গুলি ব্যবহার করা হয় তা হল:

১. STRING

  • ব্যাখ্যা: এটি টেক্সট ডেটা ধারণ করে, যেমন নাম, ঠিকানা ইত্যাদি।
  • উদাহরণ: 'John Doe', 'Hive Tutorial'
name STRING

২. INT

  • ব্যাখ্যা: পূর্ণসংখ্যা ধারণ করে। এটি ৪ বাইট আকারের একটি ডেটা টাইপ।
  • উদাহরণ: 10, -50
age INT

৩. BIGINT

  • ব্যাখ্যা: এটি বড় পূর্ণসংখ্যা ধারণ করতে ব্যবহৃত হয়, যা INT এর তুলনায় বড় পরিসরের মান ধারণ করতে পারে।
  • উদাহরণ: 123456789, -9876543210
population BIGINT

৪. FLOAT

  • ব্যাখ্যা: দশমিক সংখ্যা ধারণ করার জন্য ব্যবহৃত হয়। এটি ৪ বাইট আকারের একটি ফ্লোটিং পয়েন্ট টাইপ।
  • উদাহরণ: 3.14, -0.001
price FLOAT

৫. DOUBLE

  • ব্যাখ্যা: এটি FLOAT এর মতো, তবে এর মধ্যে আরও সঠিকতার জন্য ডাবল প্রিসিশন ফ্লোটিং পয়েন্ট মান থাকে। এটি ৮ বাইট আকারের একটি ডেটা টাইপ।
  • উদাহরণ: 3.14159, -0.123456
distance DOUBLE

৬. BOOLEAN

  • ব্যাখ্যা: এটি সত্য (TRUE) বা মিথ্যা (FALSE) মান ধারণ করে।
  • উদাহরণ: TRUE, FALSE
is_active BOOLEAN

৭. DATE

  • ব্যাখ্যা: একটি নির্দিষ্ট দিন, মাস এবং বছরের তথ্য ধারণ করে।
  • উদাহরণ: '2024-12-17'
date_of_birth DATE

৮. TIMESTAMP

  • ব্যাখ্যা: একটি নির্দিষ্ট সময় (ঘণ্টা, মিনিট, সেকেন্ড) সহ তারিখ ধারণ করে। এটি সময় সহ দিন, মাস এবং বছর তথ্য ধারণ করে।
  • উদাহরণ: '2024-12-17 14:30:00'
created_at TIMESTAMP

৯. DECIMAL

  • ব্যাখ্যা: এটি দশমিক মান ধারণ করে, যা নির্দিষ্ট সংখ্যক ডিগিট এবং দশমিক স্থান ধরে। এটি সঠিক গাণিতিক হিসাবের জন্য ব্যবহৃত হয়।
  • উদাহরণ: 123.45, -6789.01
balance DECIMAL(10,2)

Complex Data Types


Complex Data Types এমন ডেটা টাইপ যা একাধিক মান ধারণ করতে পারে। Hive-এ কিছু সাধারণ Complex Data Types রয়েছে, যা ব্যবহারকারীরা তালিকা, ম্যাপ, এবং স্ট্রাকচারের মতো জটিল তথ্য গঠন তৈরি করতে ব্যবহার করতে পারেন।

১. ARRAY

  • ব্যাখ্যা: এটি এক ধরনের তালিকা (list), যা একটি নির্দিষ্ট ধরনের একাধিক মান ধারণ করতে পারে।
  • উদাহরণ: [1, 2, 3, 4], ['apple', 'banana', 'cherry']
hobbies ARRAY<STRING>

২. MAP

  • ব্যাখ্যা: এটি কী (key)-ভ্যালু (value) পেয়ার ধারণ করে, যেখানে প্রতিটি কী একটি ইউনিক মান হয়।
  • উদাহরণ: {'key1': 'value1', 'key2': 'value2'}, {'name': 'John', 'age': '30'}
properties MAP<STRING, STRING>

৩. STRUCT

  • ব্যাখ্যা: এটি একটি কমপ্লেক্স টাইপ যা একাধিক উপাদান ধারণ করতে পারে, যেখানে প্রতিটি উপাদান আলাদা ডেটা টাইপ হতে পারে।
  • উদাহরণ: {name: 'John', age: 30}, {id: 1, name: 'Apple', price: 50.5}
address STRUCT<street: STRING, city: STRING, zip: INT>

৪. UNIONTYPE

  • ব্যাখ্যা: এটি এমন একটি ডেটা টাইপ যা একাধিক ডেটা টাইপের মধ্যে যেকোনো একটি মান ধারণ করতে পারে।
  • উদাহরণ: int বা string মধ্যে যেকোনো একটি মান ধারণ করতে পারে। এটি সাধারণত সেক্ষেত্রে ব্যবহৃত হয় যেখানে একটি কলামে বিভিন্ন ধরনের ডেটা থাকতে পারে।
data UNIONTYPE<STRING, INT>

Hive Data Types এর ব্যবহার উদাহরণ


টেবিল তৈরি:

CREATE TABLE employee_details (
  id INT,
  name STRING,
  salary FLOAT,
  is_active BOOLEAN,
  date_of_birth DATE,
  joining_date TIMESTAMP,
  address STRUCT<street: STRING, city: STRING, zip: INT>,
  hobbies ARRAY<STRING>,
  extra_details MAP<STRING, STRING>
)
STORED AS TEXTFILE;

এখানে employee_details টেবিলটি বিভিন্ন Primitive এবং Complex Data Types সমর্থন করে।

ডেটা ইনসার্ট:

INSERT INTO employee_details 
VALUES (1, 'John Doe', 55000.0, TRUE, '1990-04-25', '2024-12-17 14:30:00', 
        named_struct('street', '123 Main St', 'city', 'New York', 'zip', 10001),
        array('reading', 'travelling'), map('Hobby', 'Reading', 'Department', 'HR'));

এখানে address একটি STRUCT টাইপ, hobbies একটি ARRAY, এবং extra_details একটি MAP টাইপ ব্যবহার করা হয়েছে।


উপসংহার


Hive-এ Data Types দুটি প্রধান ক্যাটেগরিতে বিভক্ত: Primitive Types এবং Complex Types। Primitive Types সাধারণ একক মান ধারণ করে, যেমন INT, STRING, BOOLEAN ইত্যাদি, যেখানে Complex Types একাধিক মান ধারণ করতে পারে, যেমন ARRAY, MAP, STRUCT। Hive-এ ডেটা টাইপ সঠিকভাবে ব্যবহার করলে ডেটা ম্যানিপুলেশন এবং বিশ্লেষণ আরও সহজ এবং কার্যকরী হয়ে ওঠে।

Content added By

STRING, INT, BOOLEAN, FLOAT এর ব্যবহার

365

Hive, Hadoop এর উপরে তৈরি একটি ডেটাবেস সিস্টেম, যা SQL-অনুরূপ কুয়েরি ভাষা (HiveQL) ব্যবহার করে ডেটা প্রক্রিয়া করে। Hive বিভিন্ন ধরনের ডেটা টাইপ সমর্থন করে, যার মধ্যে STRING, INT, BOOLEAN, এবং FLOAT অন্যতম। এগুলির প্রতিটি ডেটা টাইপের উদ্দেশ্য এবং ব্যবহার বিভিন্ন ধরনের ডেটা সংরক্ষণ ও বিশ্লেষণ করতে সাহায্য করে।

STRING


STRING ডেটা টাইপ ব্যবহার করা হয় যে কোনো ধরনের টেক্সট (অক্ষর বা ক্যারেক্টার) সংরক্ষণ করতে। Hive-এ STRING ডেটা টাইপ ব্যবহার করা হয় যখন কোনো ডেটার আকার অপরিবর্তনীয় না হয়ে একাধিক অক্ষর বা চরিত্র হতে পারে।

STRING এর ব্যবহার:

CREATE TABLE employees (
  id INT,
  name STRING,
  department STRING
);

এখানে name এবং department কলামগুলো STRING টাইপ, কারণ এই কলামগুলোতে টেক্সট ডেটা থাকবে।

STRING ইনসার্ট করা:

INSERT INTO TABLE employees
VALUES (1, 'John Doe', 'Sales');

এখানে John Doe এবং Sales STRING টাইপের ডেটা।

INT


INT (Integer) ডেটা টাইপ ব্যবহার করা হয় পূর্ণসংখ্যা (whole numbers) সংরক্ষণ করার জন্য। Hive-এ INT ডেটা টাইপ ব্যবহার করে এমন সব ডেটা সংরক্ষণ করা যায়, যেগুলি কোনো দশমিকের প্রয়োজন নেই।

INT এর ব্যবহার:

CREATE TABLE employees (
  id INT,
  age INT
);

এখানে id এবং age কলামগুলো INT টাইপ, কারণ এগুলোতে পূর্ণসংখ্যা ডেটা থাকবে।

INT ইনসার্ট করা:

INSERT INTO TABLE employees
VALUES (1, 30);

এখানে 1 এবং 30 INT টাইপের ডেটা।

BOOLEAN


BOOLEAN ডেটা টাইপ ব্যবহার করা হয় সত্য (true) বা মিথ্যা (false) মান সংরক্ষণ করার জন্য। এটি সাধারণত শর্তাধীন কুয়েরি এবং ফিল্টারিংয়ে ব্যবহৃত হয়।

BOOLEAN এর ব্যবহার:

CREATE TABLE employees (
  id INT,
  name STRING,
  is_active BOOLEAN
);

এখানে is_active একটি BOOLEAN টাইপ, যেটিতে true বা false মান থাকবে।

BOOLEAN ইনসার্ট করা:

INSERT INTO TABLE employees
VALUES (1, 'John Doe', true);

এখানে true BOOLEAN টাইপের মান।

FLOAT


FLOAT ডেটা টাইপ ব্যবহার করা হয় দশমিক সংখ্যা (decimal numbers) সংরক্ষণ করার জন্য। এটি সাধারণত যখন ডেটার মান দশমিক সঠিকতা প্রয়োজন হয়, তখন ব্যবহার করা হয়। FLOAT টাইপ ব্যবহার করে আমরা ডেটার একটি নির্দিষ্ট সঠিকতা (precision) সংরক্ষণ করতে পারি।

FLOAT এর ব্যবহার:

CREATE TABLE employees (
  id INT,
  name STRING,
  salary FLOAT
);

এখানে salary কলামটি FLOAT টাইপ, কারণ এখানে বেতন একটি দশমিক মান হতে পারে।

FLOAT ইনসার্ট করা:

INSERT INTO TABLE employees
VALUES (1, 'John Doe', 50000.75);

এখানে 50000.75 FLOAT টাইপের ডেটা, যেখানে একটি দশমিক মান রয়েছে।


ডেটা টাইপ নির্বাচন


যখন Hive-এ টেবিল তৈরি করা হয়, তখন সঠিক ডেটা টাইপ নির্বাচন করা খুবই গুরুত্বপূর্ণ, কারণ এটি ডেটার সঠিকতা, পারফরম্যান্স এবং স্টোরেজের সাথে সম্পর্কিত। উদাহরণস্বরূপ:

  • যদি কোনো কলামে শুধুমাত্র পূর্ণসংখ্যা ডেটা থাকতে পারে, তাহলে INT টাইপ ব্যবহার করা হবে।
  • যদি কোন কলামে টেক্সট ডেটা থাকতে পারে, তবে STRING টাইপ ব্যবহার করা হবে।
  • BOOLEAN ব্যবহার করা হবে যদি আপনি শুধুমাত্র দুটি মান (সত্য/মিথ্যা) সংরক্ষণ করতে চান।
  • FLOAT টাইপ ব্যবহার করা হবে যদি ডেটা দশমিক সঠিকতার প্রয়োজন হয়, যেমন বেতন বা অন্যান্য পরিমাণ।

উপসংহার


Hive-এ STRING, INT, BOOLEAN, এবং FLOAT বিভিন্ন ডেটা টাইপের মধ্যে প্রতিটি টাইপের নির্দিষ্ট ব্যবহার রয়েছে। এই ডেটা টাইপগুলি যথাযথভাবে ব্যবহার করে আপনি Hive-এ সঠিকভাবে ডেটা সংরক্ষণ এবং বিশ্লেষণ করতে পারবেন। Hive-এর এই বৈশিষ্ট্যগুলি Hadoop প্ল্যাটফর্মের বিশাল ডেটাসেট প্রক্রিয়া করার জন্য গুরুত্বপূর্ণ এবং কার্যকরী।

Content added By

Complex Data Types (ARRAY, MAP, STRUCT)

351

Hive সমর্থন করে বিভিন্ন complex data types, যা ডেটাবেসের মধ্যে স্ট্রাকচারড ডেটা সংরক্ষণ এবং প্রক্রিয়া করতে সহায়তা করে। এই কমপ্লেক্স ডেটা টাইপগুলি HiveQL-এ সহজে ব্যবহার করা যায় এবং এটি ডেটার স্টোরেজ ও বিশ্লেষণে আরও নমনীয়তা প্রদান করে। ARRAY, MAP, এবং STRUCT হল তিনটি প্রধান কমপ্লেক্স ডেটা টাইপ, যা Hive-এ ডেটা সংরক্ষণ এবং প্রসেসিং করতে ব্যবহৃত হয়।

১. ARRAY


ARRAY একটি সিকোয়েন্সিয়াল (ordered) ডেটার সংগ্রহ, যেখানে প্রতিটি উপাদান এক ধরনের ডেটা হয়ে থাকে। এটি একটি নির্দিষ্ট টাইপের একাধিক মান (values) রাখতে সক্ষম।

ARRAY এর সিনট্যাক্স:

ARRAY<element_type>

এখানে element_type হলো উপাদানের ডেটা টাইপ, যেমন INT, STRING, FLOAT ইত্যাদি।

ARRAY তৈরি এবং ব্যবহার:

CREATE TABLE employee (
    id INT,
    name STRING,
    skills ARRAY<STRING>
);

এটি employee টেবিল তৈরি করবে, যেখানে skills একটি ARRAY টাইপ কলাম, যা একজন কর্মচারীর বিভিন্ন স্কিল স্টোর করতে পারে।

ARRAY-এ ডেটা ইনসার্ট:

INSERT INTO employee 
VALUES (1, 'John Doe', ARRAY('Java', 'Hive', 'SQL'));

এটি John Doe কর্মচারীর জন্য skills কলামে তিনটি স্কিল ইনসার্ট করবে (Java, Hive, SQL)।

ARRAY থেকে ডেটা রিট্রিভ করা:

SELECT name, skills[0] FROM employee;

এটি employee টেবিল থেকে কর্মচারীর নাম এবং প্রথম স্কিল (skills[0]) নির্বাচন করবে।


২. MAP


MAP হল একটি key-value পেয়ার সংগ্রহ, যেখানে প্রতিটি key এবং তার সংশ্লিষ্ট value এক ধরনের ডেটা হয়ে থাকে। MAP ব্যবহার করে আপনি বিভিন্ন ধরনের মানগুলো একটি একক কলামে সংরক্ষণ করতে পারেন।

MAP এর সিনট্যাক্স:

MAP<key_type, value_type>

এখানে key_type এবং value_type হল key এবং value এর ডেটা টাইপ, যেমন STRING, INT, FLOAT, ইত্যাদি।

MAP তৈরি এবং ব্যবহার:

CREATE TABLE employee (
    id INT,
    name STRING,
    contact_info MAP<STRING, STRING>
);

এটি employee টেবিল তৈরি করবে, যেখানে contact_info একটি MAP<STRING, STRING> টাইপ কলাম, যা একাধিক কন্টাক্ট তথ্য (যেমন, ফোন নম্বর, ইমেইল অ্যাড্রেস) ধারণ করতে পারে।

MAP-এ ডেটা ইনসার্ট:

INSERT INTO employee 
VALUES (1, 'John Doe', MAP('Phone', '123-456-7890', 'Email', 'john.doe@example.com'));

এটি contact_info MAP এ Phone এবং Email এর মান সন্নিবেশ করবে।

MAP থেকে ডেটা রিট্রিভ করা:

SELECT name, contact_info['Phone'] FROM employee;

এটি employee টেবিল থেকে name এবং Phone কন্টাক্ট ইনফরমেশন নির্বাচন করবে।


৩. STRUCT


STRUCT একটি কাস্টম ডেটা টাইপ, যা একাধিক ডেটা টাইপের মান ধারণ করতে পারে। এটি এক ধরনের রেকর্ড টাইপ, যেখানে একাধিক ফিল্ড থাকে, প্রতিটি ফিল্ডের ডেটা টাইপ আলাদা হতে পারে।

STRUCT এর সিনট্যাক্স:

STRUCT<field1_type, field2_type, ...>

এখানে প্রতিটি field_type হল স্ট্রাকচারের বিভিন্ন ফিল্ডের ডেটা টাইপ, যেমন STRING, INT, FLOAT, ইত্যাদি।

STRUCT তৈরি এবং ব্যবহার:

CREATE TABLE employee (
    id INT,
    name STRING,
    address STRUCT<street:STRING, city:STRING, zip:INT>
);

এটি employee টেবিল তৈরি করবে, যেখানে address একটি STRUCT টাইপ কলাম, যা কর্মচারীর ঠিকানা সংরক্ষণ করবে (যেমন street, city, zip code)।

STRUCT-এ ডেটা ইনসার্ট:

INSERT INTO employee 
VALUES (1, 'John Doe', STRUCT('123 Main St', 'New York', 10001));

এটি address STRUCT এ street, city, এবং zip কোড ইনসার্ট করবে।

STRUCT থেকে ডেটা রিট্রিভ করা:

SELECT name, address.city FROM employee;

এটি employee টেবিল থেকে কর্মচারীর নাম এবং শহরের তথ্য (address.city) নির্বাচন করবে।


Complex Data Types ব্যবহার করতে কিছু টিপস


  • ARRAY: ব্যবহারকারীরা ARRAY ব্যবহার করে একাধিক মান সন্নিবেশ করতে পারেন, যেমন একাধিক ফোন নম্বর বা স্কিল। এটি একটি নির্দিষ্ট অর্ডারে ডেটা সংরক্ষণ করে, যার ফলে আপনি ইনডেক্সের মাধ্যমে ডেটা অ্যাক্সেস করতে পারবেন।
  • MAP: MAP টেবিল কলামে কীগুলোর মধ্যে সম্পর্ক (key-value pairs) ধারণ করতে ব্যবহার করা হয়। এটি এমন পরিস্থিতিতে উপকারী যখন আপনি একটি ডেটা সেটে একাধিক মানের জন্য কীগুলোর মধ্যে সম্পর্ক রাখতে চান।
  • STRUCT: STRUCT সঠিকভাবে স্ট্রাকচারড ডেটার জন্য ব্যবহার করা হয়, যখন বিভিন্ন ধরনের ডেটা (যেমন নাম, বয়স, ঠিকানা) একটি একক রেকর্ডে রাখা প্রয়োজন।

উপসংহার


Hive-এর ARRAY, MAP, এবং STRUCT ডেটা টাইপগুলি ডেটাবেসের মধ্যে কমপ্লেক্স এবং স্ট্রাকচারড ডেটা পরিচালনা করতে সহায়তা করে। এই কমপ্লেক্স ডেটা টাইপগুলি ব্যবহারকারীদের জন্য ডেটা ম্যানিপুলেশন এবং বিশ্লেষণ সহজ করে তোলে। ARRAY একাধিক মান, MAP কীগুলোর মাধ্যমে সম্পর্কিত মান, এবং STRUCT একাধিক ফিল্ডের সমন্বয়ে ডেটা ধারণ করতে সাহায্য করে, যা ডেটাবেস ডিজাইন এবং কুয়েরি অপটিমাইজেশনের জন্য উপকারী।

Content added By

Hive এর জন্য Data File Formats (TEXT, ORC, PARQUET, AVRO)

340

Hive ডেটা বিশ্লেষণের জন্য বিভিন্ন ফাইল ফরম্যাট সমর্থন করে, যার মধ্যে TEXT, ORC, PARQUET, এবং AVRO অন্যতম। প্রতিটি ফাইল ফরম্যাটের নিজস্ব সুবিধা এবং ব্যবহার ক্ষেত্র রয়েছে, এবং এগুলি Hadoop ইকোসিস্টেমে বিভিন্ন ডেটা প্রক্রিয়াকরণের জন্য উপযোগী।

এখানে এই ফাইল ফরম্যাটগুলো সম্পর্কে বিস্তারিত আলোচনা করা হলো।

1. TEXT FILE


TEXTFILE হল Hive এর প্রাথমিক ডেটা ফরম্যাট এবং এটি Hadoop এর HDFS-এ সঞ্চিত সাধারণ টেক্সট ফাইল হিসেবে ডেটা ধারণ করে। এটি কমপ্লেক্স নয় এবং সাধারণ ডেটা সঞ্চয় করার জন্য ব্যবহৃত হয়।

বিশেষত্ব:

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

কোড উদাহরণ:

CREATE TABLE employee (
  id INT,
  name STRING,
  salary FLOAT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

2. ORC (Optimized Row Columnar)


ORC (Optimized Row Columnar) একটি Columnar Storage ফরম্যাট যা বড় ডেটাসেটের জন্য বিশেষভাবে ডিজাইন করা হয়েছে। এটি মূলত পারফরম্যান্স এবং সঞ্চয় উন্নত করতে ব্যবহৃত হয়।

বিশেষত্ব:

  • Columnar ফরম্যাট: ডেটা কলামের ভিত্তিতে সঞ্চিত হয়, যা টেবিলের শুধুমাত্র প্রয়োজনীয় কলাম পড়ার মাধ্যমে পারফরম্যান্স বৃদ্ধি করে।
  • কমপ্যাক্ট স্টোরেজ: ORC ফাইল ফরম্যাট ডেটাকে সঙ্কুচিত করে, ফলে ডিস্ক স্পেস কম লাগে এবং ডেটা দ্রুত লোড হয়।
  • ACID সাপোর্ট: এটি ACID ট্রানজেকশন সমর্থন করে এবং হাইভের মধ্যে ডেটা আপডেট, ডিলিট এবং ইনসার্ট পরিচালনা করতে সাহায্য করে।

কোড উদাহরণ:

CREATE TABLE employee (
  id INT,
  name STRING,
  salary FLOAT
)
STORED AS ORC;

3. PARQUET


PARQUET একটি Columnar Storage ফরম্যাট যা ডেটা সঞ্চয়ের জন্য অত্যন্ত দক্ষ। এটি Apache Arrow দ্বারা সমর্থিত এবং বিভিন্ন ডেটা সিস্টেমের মধ্যে ডেটা শেয়ার করার জন্য উপযোগী।

বিশেষত্ব:

  • Columnar Storage: ডেটা কলামের ভিত্তিতে সঞ্চিত হয়, যা অ্যানালিটিক্যাল কুয়েরি করার সময় পারফরম্যান্স উন্নত করে।
  • স্কিমা: Parquet ফাইল ফরম্যাট ডেটার স্কিমা ধারণ করে, ফলে ডেটা প্রসেসিং এর সময় আরও নির্ভরযোগ্য হয়।
  • অভ্যন্তরীণ কম্প্রেশন: Parquet ফাইল সঞ্চয়ের সময় অন্তর্নিহিত কম্প্রেশন সমর্থন করে, যা স্টোরেজ স্পেস সাশ্রয় করে।

কোড উদাহরণ:

CREATE TABLE employee (
  id INT,
  name STRING,
  salary FLOAT
)
STORED AS PARQUET;

4. AVRO


AVRO একটি সিরিয়ালাইজেশন ফরম্যাট যা Apache Avro লাইব্রেরি দ্বারা সমর্থিত। এটি স্কিমা সহ ডেটা সঞ্চয় করার জন্য ডিজাইন করা হয়েছে এবং JSON বা অন্যান্য ফাইল ফরম্যাটের তুলনায় এটি দ্রুত এবং কার্যকরী।

বিশেষত্ব:

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

কোড উদাহরণ:

CREATE TABLE employee (
  id INT,
  name STRING,
  salary FLOAT
)
STORED AS AVRO;

তুলনা: TEXT, ORC, PARQUET, AVRO


ফাইল ফরম্যাটপারফরম্যান্সসঞ্চয়কম্প্রেশনস্কিমাবিশেষত্ব
TEXTকমকম্প্যাক্ট নয়নেইস্কিমা-লেসসহজ এবং প্রাথমিক, সাধারণ ডেটার জন্য উপযুক্ত।
ORCখুব ভালোসাশ্রয়ীহ্যাঁরয়েছেকম্প্যাক্ট স্টোরেজ এবং দ্রুত পারফরম্যান্স।
PARQUETভালোসাশ্রয়ীহ্যাঁরয়েছেস্টোরেজ ইফিশিয়েন্সি এবং স্কিমা ভিত্তিক ফরম্যাট।
AVROভালোসাশ্রয়ীহ্যাঁরয়েছেস্কিমা সহ ডেটা সঞ্চয়, দ্রুত এবং কার্যকরী।

উপসংহার


Hive বিভিন্ন ফাইল ফরম্যাট সমর্থন করে, যা বিভিন্ন ডেটা প্রসেসিংয়ের প্রয়োজন অনুযায়ী ব্যবহৃত হয়। TEXT ফাইল ফরম্যাট সিম্পল এবং সহজ, তবে পারফরম্যান্স এবং স্টোরেজ এফিসিয়েন্সির জন্য ORC, PARQUET, এবং AVRO অনেক বেশি উপযোগী। ORC এবং PARQUET কলামার ফরম্যাটের জন্য উপযুক্ত, যেখানে AVRO স্কিমা সমর্থন করে এবং তা দ্রুত ডেটা সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন জন্য কার্যকর।

Content added By
Promotion

Are you sure to start over?

Loading...