Aggregation এবং Grouping Techniques গাইড ও নোট

Big Data and Analytics - স্পার্ক এসকিউএল (Spark SQL) - DataFrames এর সাথে কাজ করা
321

Spark SQL-এ aggregation এবং grouping হল ডেটা প্রসেসিংয়ের দুটি গুরুত্বপূর্ণ কৌশল, যা আপনাকে ডেটার উপর বিভিন্ন ধরনের স্ট্যাটিস্টিক্যাল অপারেশন (যেমন গড়, যোগফল, মিনিমাম, ম্যাক্সিমাম, কাউন্ট) করতে সহায়তা করে। এই কৌশলগুলি সাধারণত GROUP BY এবং aggregation functions এর মাধ্যমে সম্পাদিত হয়। চলুন, Spark SQL-এ Aggregation এবং Grouping Techniques কিভাবে ব্যবহার করা হয়, তা বিস্তারিতভাবে দেখব।


Aggregation Functions (অ্যাগ্রিগেশন ফাংশন)

Spark SQL-এ বেশ কিছু শক্তিশালী অ্যাগ্রিগেশন ফাংশন রয়েছে, যা বিভিন্ন ডেটার উপর গাণিতিক অপারেশন করতে সাহায্য করে। এখানে কিছু গুরুত্বপূর্ণ aggregation ফাংশন দেওয়া হলো:

  • count(): ডেটাসেটের মধ্যে কতটি রেকর্ড আছে, তা গণনা করে।
  • sum(): নির্দিষ্ট কলামের মোট যোগফল নির্ধারণ করে।
  • avg(): নির্দিষ্ট কলামের গড় মান নির্ধারণ করে।
  • min(): নির্দিষ্ট কলামের সর্বনিম্ন মান নির্ধারণ করে।
  • max(): নির্দিষ্ট কলামের সর্বোচ্চ মান নির্ধারণ করে।

Aggregation ব্যবহার করে ডেটা প্রসেসিং

ধরা যাক, আমাদের কাছে একটি DataFrame আছে, যেখানে কর্মচারীদের নাম, বয়স, এবং তাদের বিভাগ সম্পর্কিত ডেটা রয়েছে। এই DataFrame এর উপর aggregation অপারেশন করতে আমরা নিচের কোড ব্যবহার করতে পারি।

উদাহরণ:

from pyspark.sql import SparkSession

# SparkSession তৈরি
spark = SparkSession.builder.appName("Aggregation Example").getOrCreate()

# ডেটা তৈরি
data = [("John", "HR", 28),
        ("Alice", "Finance", 30),
        ("Bob", "IT", 25),
        ("Dave", "HR", 32),
        ("Eve", "Finance", 29)]

# DataFrame তৈরি
columns = ["Name", "Department", "Age"]
df = spark.createDataFrame(data, columns)

# Aggregation ফাংশন ব্যবহার করা (গড় বয়স)
df_avg_age = df.groupBy("Department").agg({"Age": "avg"})
df_avg_age.show()

আউটপুট:

+----------+--------+
|Department|avg(Age)|
+----------+--------+
|       HR|    30.0|
|  Finance|    29.5|
|       IT|    25.0|
+----------+--------+

এখানে:

  • groupBy("Department") ব্যবহার করে বিভাগ অনুযায়ী ডেটাকে গ্রুপ করা হয়েছে।
  • agg({"Age": "avg"}) ব্যবহার করে প্রতিটি বিভাগের গড় বয়স গণনা করা হয়েছে।

Grouping Techniques (গ্রুপিং টেকনিক)

GROUP BY অপারেশন ব্যবহার করে ডেটাকে গ্রুপ করা হয় এবং তারপর প্রতিটি গ্রুপের জন্য aggregation ফাংশন প্রয়োগ করা হয়। Spark SQL এর groupBy() এবং agg() মেথড এর মাধ্যমে আপনি ডেটাকে গ্রুপ করে বিভিন্ন ধরনের স্ট্যাটিস্টিক্যাল অপারেশন করতে পারেন।

উদাহরণ:

# বিভাগ অনুসারে গড় বয়স এবং বয়সের যোগফল বের করা
df_grouped = df.groupBy("Department").agg(
    {"Age": "avg", "Age": "sum"}
)
df_grouped.show()

আউটপুট:

+----------+--------+--------+
|Department|avg(Age)|sum(Age)|
+----------+--------+--------+
|       HR|    30.0|     60|
|  Finance|    29.5|     59|
|       IT|    25.0|     25|
+----------+--------+--------+

এখানে:

  • groupBy("Department") ডেটাকে বিভাগ অনুসারে গ্রুপ করে।
  • agg({"Age": "avg", "Age": "sum"}) দ্বারা প্রতিটি বিভাগের জন্য গড় বয়স এবং বয়সের যোগফল হিসাব করা হয়েছে।

Multiple Aggregation Functions (একাধিক অ্যাগ্রিগেশন ফাংশন)

Spark SQL-এ একাধিক aggregation ফাংশন একযোগে ব্যবহার করা যায়। আপনি যদি একই কলামের ওপর একাধিক aggregation অপারেশন করতে চান, তবে তা একসাথে করা সম্ভব।

উদাহরণ:

# একাধিক aggregation ফাংশন
df_agg_multiple = df.groupBy("Department").agg(
    {"Age": "avg", "Age": "max", "Age": "min", "Age": "sum"}
)
df_agg_multiple.show()

আউটপুট:

+----------+--------+--------+--------+--------+
|Department|avg(Age)|max(Age)|min(Age)|sum(Age)|
+----------+--------+--------+--------+--------+
|       HR|    30.0|      32|      28|      60|
|  Finance|    29.5|      30|      29|      59|
|       IT|    25.0|      25|      25|      25|
+----------+--------+--------+--------+--------+

এখানে:

  • আমরা একই কলাম Age এর ওপর গড় (avg), সর্বোচ্চ (max), সর্বনিম্ন (min), এবং যোগফল (sum) একসাথে ব্যবহার করেছি।

Filtered Aggregation (ফিল্টারড অ্যাগ্রিগেশন)

Spark SQL-এ আপনি aggregation এর আগে ডেটা ফিল্টার করতে পারেন, যাতে নির্দিষ্ট শর্তে ডেটা বিশ্লেষণ করা যায়। filter() বা where() মেথড ব্যবহার করে এই কাজটি করা হয়।

উদাহরণ:

# শুধুমাত্র ৩০ এর উপরে বয়সের ক্ষেত্রে গড় বয়স বের করা
df_filtered = df.filter(df["Age"] > 30).groupBy("Department").agg({"Age": "avg"})
df_filtered.show()

আউটপুট:

+----------+--------+
|Department|avg(Age)|
+----------+--------+
|       HR|    32.0|
+----------+--------+

এখানে:

  • filter(df["Age"] > 30) ব্যবহার করে আমরা প্রথমে এমন রেকর্ডগুলো ফিল্টার করেছি, যেগুলোর বয়স ৩০ এর বেশি।
  • এরপর, groupBy("Department").agg({"Age": "avg"}) দ্বারা সেই ডেটার ওপর গড় বয়স হিসাব করা হয়েছে।

সারাংশ

Spark SQL-এর aggregation এবং grouping techniques আপনাকে বিভিন্ন ডেটাসেটের ওপর স্ট্যাটিস্টিক্যাল অপারেশন করতে সহায়তা করে। groupBy() এবং agg() মেথডের মাধ্যমে আপনি সহজে ডেটাকে গ্রুপ করে, বিভিন্ন অ্যাগ্রিগেশন ফাংশন (যেমন sum(), avg(), max(), min(), count()) ব্যবহার করতে পারেন। Spark SQL আপনাকে একাধিক অ্যাগ্রিগেশন ফাংশন একসাথে ব্যবহার করার সুবিধা দেয়, এবং filter() বা where() মেথড ব্যবহার করে আপনি aggregation করার আগে ডেটাকে ফিল্টার করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...