Big Data and Analytics Columns এবং Rows এর মাধ্যমে Data Manipulation গাইড ও নোট

290

Spark SQL একটি অত্যন্ত শক্তিশালী প্ল্যাটফর্ম যা ডেটার উপর SQL কোয়ারি, DataFrame API এবং Dataset API ব্যবহার করে ডেটা ম্যানিপুলেশন করতে সাহায্য করে। এই টিউটোরিয়ালে, আমরা দেখবো কীভাবে Spark SQL এ DataFrame এর Columns এবং Rows ব্যবহার করে ডেটা ম্যানিপুলেশন করা যায়।


DataFrame-এ Columns এর মাধ্যমে Data Manipulation

DataFrame একটি টেবিলের মতো ডেটা স্ট্রাকচার যা কলাম ভিত্তিক ডেটা সঞ্চয় করে। Spark SQL-এর DataFrame API ব্যবহার করে আপনি সহজেই কলামগুলোর উপর বিভিন্ন অপারেশন চালাতে পারেন, যেমন কলাম নির্বাচন, কলাম যোগ করা, কলাম ডিলিট করা, এবং কলামের মান পরিবর্তন করা।

1. কলাম নির্বাচন (Selecting Columns)

DataFrame থেকে নির্দিষ্ট কলাম নির্বাচন করার জন্য, আপনি .select() মেথড ব্যবহার করতে পারেন।

# SparkSession তৈরি করা
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("Spark SQL Example").getOrCreate()

# DataFrame তৈরি
data = [("John", 28), ("Doe", 22), ("Alice", 30), ("Bob", 25)]
columns = ["Name", "Age"]
df = spark.createDataFrame(data, columns)

# নির্দিষ্ট কলাম নির্বাচন
df.select("Name").show()

এই কোডটি শুধুমাত্র "Name" কলামটি প্রদর্শন করবে।

2. কলাম যোগ করা (Adding Columns)

DataFrame-এ নতুন কলাম যোগ করতে আপনি DataFrame এর সাথে একটি নতুন কলাম যোগ করতে পারেন। উদাহরণস্বরূপ, যদি আপনি "Age" কলামের ওপর কিছু গণনা করতে চান এবং একটি নতুন কলাম তৈরি করতে চান:

from pyspark.sql.functions import col

# একটি নতুন কলাম 'Age_in_5_years' যোগ করা
df_with_new_col = df.withColumn("Age_in_5_years", col("Age") + 5)
df_with_new_col.show()

এই কোডটি "Age_in_5_years" নামক একটি নতুন কলাম যোগ করবে, যার মান হবে "Age" কলামের মানের উপর ৫ যোগ করা।

3. কলাম মুছে ফেলা (Dropping Columns)

DataFrame থেকে নির্দিষ্ট কলাম মুছে ফেলতে আপনি .drop() মেথড ব্যবহার করতে পারেন:

# "Age" কলাম মুছে ফেলা
df_dropped = df.drop("Age")
df_dropped.show()

এখানে, "Age" কলামটি DataFrame থেকে মুছে ফেলা হয়েছে।

4. কলামের মান পরিবর্তন (Modifying Column Values)

আপনি একটি কলামের মান পরিবর্তন করতে পারেন যেমন নির্দিষ্ট শর্ত অনুযায়ী। উদাহরণস্বরূপ, "Age" কলামের মান ৩০ এর বেশি হলে সেটিকে ৩০ এর সমান করে দেওয়া:

from pyspark.sql.functions import when

# Age কলামের মান পরিবর্তন করা
df_modified = df.withColumn("Age", when(col("Age") > 30, 30).otherwise(col("Age")))
df_modified.show()

এখানে, যদি "Age" কলামের মান ৩০ এর বেশি হয়, তবে সেটি ৩০ হবে, অন্যথায় পূর্বের মান থাকবে।


DataFrame-এ Rows এর মাধ্যমে Data Manipulation

DataFrame এর রো (row) গুলি ম্যানিপুলেট করতে হলে সাধারণত ফিল্টার, গ্রুপিং, অর্ডারিং, এবং শর্ত ভিত্তিক অপারেশন ব্যবহার করা হয়। Spark SQL-এ filter() অথবা where() মেথড ব্যবহার করে রো-ভিত্তিক ডেটা ম্যানিপুলেশন করা যায়।

1. রো ফিল্টার করা (Filtering Rows)

DataFrame থেকে নির্দিষ্ট শর্ত অনুযায়ী রো ফিল্টার করতে আপনি .filter() অথবা .where() মেথড ব্যবহার করতে পারেন:

# "Age" কলামের মান ২৫ এর বেশি হলে রো ফিল্টার করা
df_filtered = df.filter(col("Age") > 25)
df_filtered.show()

এখানে, "Age" কলামের মান ২৫ এর বেশি এমন সব রো প্রদর্শিত হবে।

2. গ্রুপিং (Grouping Rows)

Spark SQL এ গ্রুপিং করতে .groupBy() মেথড ব্যবহার করা হয়, যা রো-ভিত্তিক অপারেশন যেমন sum(), avg(), count() ইত্যাদি প্রয়োগ করতে সাহায্য করে:

# "Age" কলাম অনুযায়ী গ্রুপিং এবং গড় বয়স নির্ণয়
df_grouped = df.groupBy("Age").count()
df_grouped.show()

এখানে, DataFrame "Age" অনুসারে গ্রুপিং করে প্রতিটি বয়সের কতগুলো রো রয়েছে তা গণনা করা হয়েছে।

3. রো সজ্জিত করা (Ordering Rows)

DataFrame এ রো সজ্জিত করতে .orderBy() মেথড ব্যবহার করা হয়। এটি রো গুলিকে নির্দিষ্ট কলামের মান অনুসারে সাজিয়ে দেয়:

# "Age" কলাম অনুসারে রো সাজানো
df_ordered = df.orderBy("Age", ascending=False)
df_ordered.show()

এখানে, "Age" কলাম অনুসারে ডেটা ডিসেন্ডিং অর্ডারে সাজানো হবে।


Spark SQL এ Columns এবং Rows ম্যানিপুলেশনের সারাংশ

Spark SQL-এ Columns এবং Rows এর মাধ্যমে ডেটা ম্যানিপুলেশন একটি গুরুত্বপূর্ণ অংশ। DataFrame API এর মাধ্যমে আপনি বিভিন্ন কলাম অপারেশন যেমন কলাম নির্বাচন, যোগ, মুছে ফেলা এবং মান পরিবর্তন করতে পারেন। একইভাবে, রো-ভিত্তিক অপারেশন যেমন ফিল্টারিং, গ্রুপিং, এবং সাজানো (ordering) করার মাধ্যমে ডেটা ম্যানিপুলেশন করা যায়। Spark SQL এর এই ক্ষমতাগুলি ডেটাকে আরও কার্যকরভাবে বিশ্লেষণ এবং প্রসেস করতে সহায়ক।

Content added By
Promotion

Are you sure to start over?

Loading...