Spark SQL-এ DataFrame একটি অত্যন্ত শক্তিশালী ডেটা স্ট্রাকচার যা SQL-এ টেবিলের মতো কাজ করে এবং SQL কোয়ারি বা DataFrame API দিয়ে ডেটা প্রসেসিং সহজ করে তোলে। DataFrame এ ফিল্টারিং (filtering), সিলেকশন (selection), এবং অর্ডারিং (ordering) অপারেশন করতে পারবেন। চলুন, এই অপারেশনগুলো কীভাবে করা যায় তা দেখি।
DataFrame-এ ফিল্টারিং (Filtering)
ফিল্টারিং বা শর্ত প্রয়োগ করা DataFrame এর মধ্যে নির্দিষ্ট রেকর্ড নির্বাচন করার একটি প্রক্রিয়া। Spark SQL-এর DataFrame API ব্যবহার করে আপনি filter() বা where() মেথডের মাধ্যমে ডেটা ফিল্টার করতে পারবেন।
ফিল্টারিং উদাহরণ:
# DataFrame তৈরি
df = spark.read.json("path_to_json_file")
# ফিল্টারিং: বয়স ৩০ এর বেশি রেকর্ড ফিল্টার করা
df_filtered = df.filter(df['age'] > 30)
df_filtered.show()
এখানে, df['age'] > 30 শর্তের অধীনে বয়স ৩০ এর বেশি রেকর্ডগুলো ফিল্টার করা হয়েছে।
where() মেথড ব্যবহার:
# where() মেথড ব্যবহার করে ফিল্টারিং
df_filtered = df.where(df['age'] > 30)
df_filtered.show()
filter() এবং where() মেথডের মধ্যে কার্যক্রম এক, তবে where() SQL-এ ব্যবহৃত WHERE ক্লজের মতো কাজ করে।
DataFrame-এ সিলেকশন (Selection)
সিলেকশন DataFrame-এর মধ্যে নির্দিষ্ট কলাম নির্বাচন করার প্রক্রিয়া। Spark SQL-এ, আপনি select() মেথড ব্যবহার করে এক বা একাধিক কলাম নির্বাচন করতে পারেন।
সিলেকশন উদাহরণ:
# DataFrame থেকে নির্দিষ্ট কলাম নির্বাচন
df_selected = df.select("name", "age")
df_selected.show()
এখানে, name এবং age কলামগুলো নির্বাচন করা হয়েছে।
একাধিক কলাম নির্বাচন:
# একাধিক কলাম নির্বাচন
df_selected = df.select("name", "age", "address")
df_selected.show()
এটি name, age, এবং address কলামগুলো নির্বাচন করবে।
নতুন কলাম যোগ করা:
# নতুন কলাম যোগ করা
from pyspark.sql.functions import col
df_selected = df.select("name", "age", (col("age") * 2).alias("double_age"))
df_selected.show()
এখানে, age কলামের দ্বিগুণ (double_age) কলাম হিসেবে নতুনভাবে যুক্ত করা হয়েছে।
DataFrame-এ অর্ডারিং (Ordering)
অর্ডারিং DataFrame-এর মধ্যে ডেটা সাজানোর (ascending বা descending) একটি প্রক্রিয়া। আপনি orderBy() মেথড ব্যবহার করে ডেটাকে একটি বা একাধিক কলামের ভিত্তিতে সাজাতে পারেন।
অর্ডারিং উদাহরণ:
# DataFrame কে বয়সের ওপর ascending অর্ডারে সাজানো
df_ordered = df.orderBy("age")
df_ordered.show()
এখানে, age কলাম অনুযায়ী ডেটা ascending (বয়সের কম থেকে বেশি) অর্ডারে সাজানো হয়েছে।
descending অর্ডারে সাজানো:
# বয়স descending অর্ডারে সাজানো
df_ordered_desc = df.orderBy(df['age'], ascending=False)
df_ordered_desc.show()
এখানে, ascending=False ব্যবহার করে বয়সের descending (বয়সের বেশি থেকে কম) অর্ডারে ডেটা সাজানো হয়েছে।
একাধিক কলামের ভিত্তিতে অর্ডারিং:
# একাধিক কলামের ভিত্তিতে সাজানো
df_ordered_multi = df.orderBy("age", "name")
df_ordered_multi.show()
এখানে, প্রথমে age কলাম অনুযায়ী ascending অর্ডারে এবং এরপর name কলাম অনুযায়ী ascending অর্ডারে ডেটা সাজানো হয়েছে।
সারাংশ
Spark SQL-এ DataFrame ব্যবহার করে ফিল্টারিং, সিলেকশন, এবং অর্ডারিং করা খুবই সহজ এবং কার্যকর। filter() বা where() মেথড দিয়ে ডেটা ফিল্টার করা যায়, select() মেথড দিয়ে কলাম সিলেক্ট করা যায় এবং orderBy() মেথড দিয়ে ডেটাকে সাজানো যায়। এই অপারেশনগুলো Spark SQL-এ ডেটা প্রসেসিংকে আরও দ্রুত এবং সুবিধাজনক করে তোলে, বিশেষ করে বড় ডেটাসেটের ক্ষেত্রে।
Read more