Apache Spark একটি শক্তিশালী ডিস্ট্রিবিউটেড ডেটা প্রসেসিং ফ্রেমওয়ার্ক যা বড় ডেটাসেট নিয়ে কাজ করতে সক্ষম। স্পার্কে Pivot এবং Unpivot হল ডেটা ট্রান্সফরমেশন কৌশল যা ডেটাকে বিভিন্ন আঙ্গিকে পুনর্গঠন করতে সহায়তা করে। এই টেকনিকগুলো বিশেষভাবে ডেটা বিশ্লেষণ এবং রিপোর্টিংয়ে ব্যবহৃত হয়, যেখানে আপনি ডেটাকে একটি নির্দিষ্ট ফরম্যাটে পুনর্গঠন করতে চান।
এই টিউটোরিয়ালে, আমরা Pivot এবং Unpivot এর ধারণা এবং স্পার্কে কিভাবে এগুলো ব্যবহার করা যায় তা আলোচনা করব।
Pivot in Apache Spark
Pivot হল একটি টেকনিক যা ডেটাকে কলামের পরিবর্তে রো (row) এর মতো পুনর্গঠন করে। এটি সাধারণত aggregated data তৈরি করতে ব্যবহৃত হয়, যেখানে একটি নির্দিষ্ট column এর মানগুলিকে বিভিন্ন নতুন কলামে রূপান্তরিত করা হয়। এটি ডেটাকে একটি নতুন ভিউতে রূপান্তরিত করে, যাতে পরবর্তীতে আরও সহজে বিশ্লেষণ করা যায়।
Pivot Example:
ধরা যাক, আপনার কাছে একটি DataFrame আছে যেখানে Category, Month, এবং Sales কলাম রয়েছে এবং আপনি Category অনুসারে Month এর প্রতি Sales এর মোট যোগফল দেখতে চান।
DataFrame Structure:
| Category | Month | Sales |
|---|---|---|
| A | Jan | 100 |
| A | Feb | 150 |
| B | Jan | 200 |
| B | Feb | 250 |
Using Pivot in Spark:
from pyspark.sql import SparkSession
from pyspark.sql.functions import sum
spark = SparkSession.builder.appName("Pivot Example").getOrCreate()
# Sample DataFrame
data = [("A", "Jan", 100), ("A", "Feb", 150), ("B", "Jan", 200), ("B", "Feb", 250)]
df = spark.createDataFrame(data, ["Category", "Month", "Sales"])
# Pivot the DataFrame
pivoted_df = df.groupBy("Category").pivot("Month").agg(sum("Sales"))
pivoted_df.show()
Output:
+--------+---+---+
|Category|Jan|Feb|
+--------+---+---+
| A|100|150|
| B|200|250|
+--------+---+---+
এখানে:
- groupBy("Category"):
Categoryঅনুসারে ডেটা গ্রুপ করা হচ্ছে। - pivot("Month"):
Monthকলামকে নতুন কলামে রূপান্তরিত করা হচ্ছে। - agg(sum("Sales")):
Salesএর মোট যোগফল নিয়ে কাজ করা হচ্ছে।
Pivot Use Cases:
- রিপোর্টিং ডেটা তৈরি করা যেখানে একটি নির্দিষ্ট ডেটা পয়েন্টের পরিবর্তে বিভিন্ন মানের জন্য সংক্ষিপ্ত সারাংশ তৈরি করতে হয়।
- Time-series analysis বা cross-tabulation যেখানে বিভিন্ন পরামিতি (যেমন মাস, বছরে) এর বিপরীতে ডেটা ভিউ তৈরি করতে হয়।
Unpivot in Apache Spark
Unpivot হল এক ধরনের বিপরীত প্রক্রিয়া, যেখানে pivoted data কে আবার তার মূল রূপে ফিরে নিয়ে আসা হয়। এটি ব্যবহার করা হয় যখন pivoted ডেটাকে রো (row) আকারে ফিরিয়ে আনা প্রয়োজন হয়।
Unpivot Example:
ধরা যাক, আপনার কাছে একটি Pivoted DataFrame রয়েছে যেখানে Month গুলি কলাম হিসেবে রয়েছে এবং আপনি এটিকে আগের রূপে ফিরিয়ে আনতে চান, যেখানে Month আবার একটি কলাম হবে।
Pivoted DataFrame:
| Category | Jan | Feb |
|---|---|---|
| A | 100 | 150 |
| B | 200 | 250 |
Using Unpivot in Spark:
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, lit
spark = SparkSession.builder.appName("Unpivot Example").getOrCreate()
# Sample Pivoted DataFrame
data = [("A", 100, 150), ("B", 200, 250)]
columns = ["Category", "Jan", "Feb"]
pivoted_df = spark.createDataFrame(data, columns)
# Unpivot the DataFrame
unpivoted_df = pivoted_df.select("Category",
col("Jan").alias("Month_Sales").withColumn("Month", lit("Jan")),
col("Feb").alias("Month_Sales").withColumn("Month", lit("Feb"))
).select("Category", "Month", "Month_Sales")
unpivoted_df.show()
Output:
+--------+-----+-----------+
|Category|Month|Month_Sales|
+--------+-----+-----------+
| A| Jan| 100|
| A| Feb| 150|
| B| Jan| 200|
| B| Feb| 250|
+--------+-----+-----------+
এখানে:
- select(): pivoted ডেটার থেকে প্রতিটি কলামকে রো (row) আকারে ফিরে আনা হচ্ছে।
- withColumn(): Month কলামকে যোগ করে এটি নির্ধারণ করা হচ্ছে যে কোন মাসের ডেটা।
Unpivot Use Cases:
- Pivoted ডেটাকে তার মূল ডেটা ফরম্যাটে ফেরত আনা।
- যখন বিশ্লেষণ বা রিপোর্টিংয়ের জন্য ডেটার প্রতিটি রেকর্ডের প্রতিটি স্তরকে আলাদা করতে হয়।
- Data cleaning বা normalization যেখানে pivoted ডেটা ফরম্যাটকে সহজতর ফরম্যাটে রূপান্তরিত করা প্রয়োজন।
Conclusion
Pivot এবং Unpivot স্পার্কে দুটি অত্যন্ত গুরুত্বপূর্ণ ডেটা ট্রান্সফরমেশন কৌশল যা ডেটাকে পুনর্গঠন, বিশ্লেষণ এবং রিপোর্টিংয়ের জন্য সহায়তা করে। Pivot ডেটাকে নতুন কলামে রূপান্তরিত করতে সাহায্য করে, যেখানে Unpivot পুনরায় ডেটাকে মূল রো ফরম্যাটে ফিরিয়ে আনে। এই টেকনিকগুলো বিশেষভাবে data wrangling, data transformation, এবং data analysis এর ক্ষেত্রে ব্যবহৃত হয়, যেখানে ডেটার ধরন পরিবর্তন বা পুনর্বিন্যাস করা প্রয়োজন হয়।
স্পার্কে Pivot এবং Unpivot ব্যবহার করে আপনি সহজে এবং দ্রুত ডেটাকে পুনর্গঠন করতে পারেন, যা ডেটা বিশ্লেষণ এবং রিপোর্টিংয়ের জন্য অত্যন্ত কার্যকর।