Parquet এবং ORC (Optimized Row Columnar) হল ডেটা স্টোরেজ ফরম্যাট যা Spark SQL এবং অন্যান্য ডেটা প্রসেসিং ফ্রেমওয়ার্কে ব্যাপকভাবে ব্যবহৃত হয়। এই ফরম্যাটগুলি বিশেষভাবে কলাম-অরিয়েন্টেড এবং কম্প্রেশন ফিচার সমর্থন করে, যার ফলে বড় ডেটাসেটের উপর দ্রুত এবং কার্যকরী ডেটা প্রসেসিং করা সম্ভব হয়।
এই টিউটোরিয়ালে আমরা Parquet এবং ORC ফরম্যাটের সুবিধা এবং ব্যবহারের পদ্ধতি নিয়ে আলোচনা করব।
১. Parquet ফাইল ফরম্যাট
Parquet একটি কলাম-অরিয়েন্টেড ডেটা ফরম্যাট যা Apache Arrow এবং Apache Avro এর উপর ভিত্তি করে তৈরি। এটি সাধারণত বড় ডেটাসেট সংরক্ষণ এবং দ্রুত প্রসেসিংয়ের জন্য ব্যবহৃত হয়। Parquet ফরম্যাটটি বিশেষভাবে হাই পারফরম্যান্স এবং কম্প্রেসড ডেটা স্টোরেজের জন্য ডিজাইন করা হয়েছে।
Parquet ফরম্যাটের সুবিধা:
- কলাম-অরিয়েন্টেড স্টোরেজ: এটি একক কলামের ডেটাকে সন্নিবেশ করে, ফলে কেবলমাত্র প্রয়োজনীয় কলামগুলোকে লোড করা সম্ভব হয়, যা পারফরম্যান্স উন্নত করে।
- ডেটা কম্প্রেশন: এটি কার্যকরী ডেটা কম্প্রেশন সমর্থন করে, ফলে স্টোরেজ খরচ কম হয়।
- স্কিমা প্রবর্তন: Parquet স্কিমা সংরক্ষণ করতে পারে, ফলে ডেটা এবং স্কিমার মধ্যে সঙ্গতি বজায় থাকে।
- বড় ডেটাসেটের জন্য আদর্শ: Parquet ফরম্যাটটি দ্রুত ডেটা প্রসেসিং এবং প্রশ্নের জন্য অপ্টিমাইজড।
Parquet ফরম্যাটে ডেটা সেভ এবং লোড করা
from pyspark.sql import SparkSession
# SparkSession তৈরি
spark = SparkSession.builder.appName("Parquet Example").getOrCreate()
# DataFrame তৈরি
data = [("Alice", 28), ("Bob", 25), ("Charlie", 30)]
columns = ["name", "age"]
df = spark.createDataFrame(data, columns)
# DataFrame কে Parquet ফরম্যাটে সেভ করা
df.write.parquet("path/to/output_parquet")
# Parquet ফাইল থেকে ডেটা লোড করা
df_parquet = spark.read.parquet("path/to/output_parquet")
df_parquet.show()
এখানে, df.write.parquet() দিয়ে ডেটাকে Parquet ফরম্যাটে সেভ করা হয়েছে এবং spark.read.parquet() দিয়ে Parquet ফাইল থেকে ডেটা লোড করা হয়েছে।
২. ORC ফাইল ফরম্যাট
ORC (Optimized Row Columnar) ফাইল ফরম্যাটটি মূলত Apache Hive দ্বারা ডেভেলপ করা হয়েছে এবং এটি কলাম-অরিয়েন্টেড ফরম্যাটের মধ্যে অন্যতম। ORC ফরম্যাটটি highly optimized এবং fast querying করার জন্য ডিজাইন করা হয়েছে, এবং এটি বিশেষভাবে Apache Hive এবং Apache Spark এর মতো টুলের জন্য উপযুক্ত।
ORC ফরম্যাটের সুবিধা:
- উচ্চ কম্প্রেশন রেট: ORC ফরম্যাটটি অন্য ফরম্যাটের তুলনায় বেশি কম্প্রেশন প্রদান করে।
- দ্রুত পারফরম্যান্স: ORC ফাইল ফরম্যাটটি দ্রুত কোয়ারি এক্সিকিউশনের জন্য অপটিমাইজড।
- কলাম-অরিয়েন্টেড স্টোরেজ: অন্যান্য কলাম-অরিয়েন্টেড ফরম্যাটের মতো ORC ফরম্যাটও শুধুমাত্র প্রয়োজনীয় কলামগুলো প্রসেস করে পারফরম্যান্স বৃদ্ধি করে।
- ব্রোডকাস্ট ক্যাশিং: ORC ফরম্যাটে বড় ডেটাসেটকে ক্যাশ করা সহজ এবং দ্রুত।
ORC ফরম্যাটে ডেটা সেভ এবং লোড করা
from pyspark.sql import SparkSession
# SparkSession তৈরি
spark = SparkSession.builder.appName("ORC Example").getOrCreate()
# DataFrame তৈরি
data = [("Alice", 28), ("Bob", 25), ("Charlie", 30)]
columns = ["name", "age"]
df = spark.createDataFrame(data, columns)
# DataFrame কে ORC ফরম্যাটে সেভ করা
df.write.orc("path/to/output_orc")
# ORC ফাইল থেকে ডেটা লোড করা
df_orc = spark.read.orc("path/to/output_orc")
df_orc.show()
এখানে, df.write.orc() দিয়ে ডেটাকে ORC ফরম্যাটে সেভ করা হয়েছে এবং spark.read.orc() দিয়ে ORC ফাইল থেকে ডেটা লোড করা হয়েছে।
৩. Parquet এবং ORC ফরম্যাটের তুলনা
| ফিচার | Parquet | ORC |
|---|---|---|
| কম্প্রেশন | ভাল কম্প্রেশন ক্ষমতা | খুব ভালো কম্প্রেশন ক্ষমতা |
| পারফরম্যান্স | দ্রুত পাঠ এবং লেখার জন্য ডিজাইন | খুব দ্রুত কুয়েরি এক্সিকিউশন |
| সামর্থ্য | Apache Hive, Apache Spark, Impala, HDFS | Apache Hive, Apache Spark, HDFS |
| ডেটা টেবিলিং | স্কিমা রেজিস্ট্রি থাকে | স্কিমা রেজিস্ট্রি থাকে, তবে আরো ছোট আকারে |
| লম্বা ডেটা প্রসেসিং | বড় ডেটাসেটের জন্য আদর্শ | বড় ডেটাসেটের জন্য আরও উপযোগী |
| পারফরম্যান্স অপটিমাইজেশন | ভাল ইনডেক্সিং এবং কম্প্রেশন | উচ্চতর কম্প্রেশন এবং দ্রুত কোয়ারি প্রসেসিং |
৪. Parquet এবং ORC ফরম্যাটের পারফরম্যান্স ইমপ্যাক্ট
- ডেটা কম্প্রেশন: ORC ফাইল ফরম্যাটটি Parquet এর তুলনায় বেশি কম্প্রেশন রেট সরবরাহ করে, যার ফলে ডিস্কের ব্যবহারে কম হয়। যদিও Parquet-ও ভালো কম্প্রেশন প্রদান করে, তবে ORC আরো বেশি সঙ্কুচিত আকারে ডেটা সংরক্ষণ করতে সক্ষম।
- পারফরম্যান্স: ORC সাধারণত দ্রুত কুয়েরি এক্সিকিউশনের জন্য অপটিমাইজড এবং এটি বড় ডেটাসেটের জন্য খুবই কার্যকরী, বিশেষত যখন ডেটা ভলিউম বড় হয়। Parquet কিছু ক্ষেত্রে বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য আরও উপযুক্ত হতে পারে, তবে ORC অধিকতর উচ্চতর পারফরম্যান্স প্রদান করে।
- সমর্থিত সিস্টেম: Parquet ফরম্যাটটি সাধারণত বিভিন্ন সিস্টেম যেমন Spark, Hive, Impala, এবং AWS Athena-এর মধ্যে ভালো ইন্টিগ্রেশন প্রদান করে। ORC মূলত Apache Hive এবং Spark-এর জন্য তৈরি করা হলেও, এটি অন্যান্য সিস্টেমে একটু কম সমর্থিত।
সারাংশ
Parquet এবং ORC হল কলাম-অরিয়েন্টেড ফাইল ফরম্যাট, যা দ্রুত ডেটা প্রসেসিং, কম্প্রেশন, এবং স্টোরেজ দক্ষতার জন্য অত্যন্ত উপযোগী। Parquet ফরম্যাটটি বিভিন্ন ডেটাবেস এবং ফ্রেমওয়ার্কে সমর্থিত, এবং এটি সাধারণত ছোট থেকে মাঝারি আকারের ডেটাসেটের জন্য ভাল পারফরম্যান্স প্রদান করে। অপরদিকে, ORC ফরম্যাটটি বৃহৎ ডেটাসেটের জন্য অত্যন্ত কার্যকরী, বিশেষত Hive এবং Spark এর মতো বড় ডেটাসেট প্রসেসিং প্ল্যাটফর্মে। ORC ডেটার উচ্চতর কম্প্রেশন ক্ষমতা এবং দ্রুত পারফরম্যান্স প্রদান করে, তবে Parquet অনেক বেশি বহুমুখী এবং অন্যান্য প্ল্যাটফর্মের সাথে সহজে ইন্টিগ্রেট করা যায়।
Read more