Actions কী এবং কিভাবে কাজ করে

Spark Transformations এবং Actions - অ্যাপাচি স্পার্ক (Apache Spark) - Big Data and Analytics

431

অ্যাপাচি স্পার্ক (Apache Spark) একটি ডিস্ট্রিবিউটেড ডেটা প্রসেসিং ফ্রেমওয়ার্ক যা বড় ডেটাসেটকে দ্রুত প্রক্রিয়া করতে সক্ষম। স্পার্কে দুটি প্রধান ধরনের অপারেশন রয়েছে: Transformations এবং Actions। যেখানে Transformations হলো লেজি (lazy) অপারেশন, অর্থাৎ যখন আপনি একটি Transformation অপারেশন চালান তখন তা অবিলম্বে কার্যকর হয় না, কিন্তু Actions অপারেশন সম্পন্ন হলে তা অবিলম্বে কার্যকর হয় এবং একটি ফলাফল প্রদান করে।

এই টিউটোরিয়ালে আমরা Actions অপারেশন নিয়ে বিস্তারিত আলোচনা করব এবং জানব কীভাবে এগুলি কাজ করে স্পার্কের মধ্যে।


Actions in Apache Spark

Actions স্পার্কে এমন অপারেশন যা ডেটাকে প্রক্রিয়া করে এবং final output তৈরি করে। যখন আপনি একটি Action অপারেশন চালান, এটি এক বা একাধিক Transformation অপারেশনের জন্য বাস্তবায়িত হবে এবং এর মাধ্যমে আউটপুট হিসেবে রেজাল্ট বা ডেটা প্রদান করা হবে।

Actions অপারেশনগুলি সাধারণত স্পার্ক অ্যাপ্লিকেশনটি শেষ করতে ব্যবহৃত হয়। যখন কোনো Action অপারেশন চালানো হয়, স্পার্ক কেবল তখনই ডেটার পার্টিশনগুলো প্রসেস করতে শুরু করে, যা স্পার্কের lazy evaluation ধারণার সাথে সামঞ্জস্যপূর্ণ।

Actions এর কাজ:

  1. Trigger the Execution: Action অপারেশন চালানো মানে হচ্ছে সমস্ত Transformation অপারেশনকে একত্রে প্রসেস করা এবং ফলস্বরূপ রেজাল্ট বের করা।
  2. Produce Results: Actions স্পার্কের ডেটা প্রসেসিংয়ের ফলস্বরূপ আউটপুট প্রদান করে, যা RDD, DataFrame অথবা Dataset হতে পারে।
  3. Termination of Spark Job: Action অপারেশন চালানোর মাধ্যমে স্পার্ক অ্যাপ্লিকেশনটি শেষ হয়, এবং তার পরবর্তী ফলাফল দেখা যায়।

Types of Actions in Spark

স্পার্কে বিভিন্ন ধরনের Action অপারেশন রয়েছে যা বিভিন্ন ধরনের আউটপুট প্রদান করে। নিচে কিছু সাধারণ Action অপারেশন দেওয়া হলো:

1. collect()

collect() স্পার্কের একটি সাধারণ অ্যাকশন যা সমস্ত ডেটা একটি ড্রাইভার প্রোগ্রামে নিয়ে আসে এবং রিটার্ন করে। এটি শুধুমাত্র ছোট ডেটাসেটের জন্য নিরাপদ, কারণ এটি সমস্ত ডেটা একত্রে রিটার্ন করে এবং এক্সিকিউটরের মধ্যে ডেটার বড় ভলিউম থাকতে পারে।

val rdd = spark.sparkContext.parallelize(Seq(1, 2, 3, 4, 5))
val result = rdd.collect()
println(result.mkString(", "))

এখানে:

  • collect() সমস্ত ডেটাকে একত্রে রিটার্ন করে এবং result এর মধ্যে ডেটা রাখা হয়।

2. count()

count() একটি অ্যাকশন যা RDD, DataFrame অথবা Dataset এর মধ্যে কতটি রেকর্ড রয়েছে তা গণনা করে।

val rdd = spark.sparkContext.parallelize(Seq(1, 2, 3, 4, 5))
val count = rdd.count()
println(s"Total count: $count")

এখানে:

  • count() ডেটার সংখ্যা গণনা করে এবং তা আউটপুট হিসেবে রিটার্ন করে।

3. reduce()

reduce() একটি অ্যাকশন যা একটি ফাংশনের মাধ্যমে সমস্ত ডেটার উপর অপারেশন চালিয়ে একটি একক আউটপুট তৈরি করে। এটি একটি বাইনারি ফাংশন (যেমন যোগ, গুণ) নেয় যা দুটি ইনপুট নিয়ে একটি আউটপুট তৈরি করে।

val rdd = spark.sparkContext.parallelize(Seq(1, 2, 3, 4, 5))
val sum = rdd.reduce((a, b) => a + b)
println(s"Sum: $sum")

এখানে:

  • reduce() দুইটি মানকে একত্রে যোগ করে এবং পরবর্তী পদ্ধতিতে এটি পুনরাবৃত্তি করে।

4. first()

first() একটি অ্যাকশন যা RDD, DataFrame অথবা Dataset এর প্রথম রেকর্ড বা ডেটা প্রদান করে।

val rdd = spark.sparkContext.parallelize(Seq(1, 2, 3, 4, 5))
val firstElement = rdd.first()
println(s"First element: $firstElement")

এখানে:

  • first() প্রথম রেকর্ডটি রিটার্ন করে।

5. take(n)

take(n) একটি অ্যাকশন যা প্রথম n সংখ্যক রেকর্ড বা ডেটা সংগ্রহ করে।

val rdd = spark.sparkContext.parallelize(Seq(1, 2, 3, 4, 5))
val firstThree = rdd.take(3)
println(s"First three elements: ${firstThree.mkString(", ")}")

এখানে:

  • take(3) প্রথম তিনটি রেকর্ড রিটার্ন করে।

6. saveAsTextFile()

saveAsTextFile() একটি অ্যাকশন যা ডেটাকে টেক্সট ফাইল হিসেবে HDFS বা লোকাল ফাইলে সেভ করে।

val rdd = spark.sparkContext.parallelize(Seq("Apple", "Banana", "Cherry"))
rdd.saveAsTextFile("output.txt")

এখানে:

  • saveAsTextFile() রেকর্ডগুলোকে টেক্সট ফাইলের আকারে সেভ করে।

7. foreach()

foreach() একটি অ্যাকশন যা প্রতিটি রেকর্ডের ওপর একটি অপারেশন চালায়, তবে এটি কোনো আউটপুট রিটার্ন করে না। এটি সাধারণত সাইড-এফেক্টের জন্য ব্যবহৃত হয়, যেমন লগিং বা ডেটা সিঙ্ক্রোনাইজেশন।

val rdd = spark.sparkContext.parallelize(Seq(1, 2, 3, 4, 5))
rdd.foreach(x => println(x))

এখানে:

  • foreach() প্রতিটি রেকর্ডের ওপর একটি অ্যাকশন (এখানে প্রিন্ট) চালায়।

Why Actions are Important in Apache Spark

Actions স্পার্কের কার্যক্রমকে ট্রিগার করে এবং RDD, DataFrame, বা Dataset থেকে আসল আউটপুট উৎপন্ন করে। এর মাধ্যমে:

  1. Execution Triggering: অ্যাকশন অপারেশন একমাত্র স্পার্কের প্রসেসিং প্রক্রিয়া শুরু করে, কারণ ট্রান্সফরমেশনগুলি লেজি (lazy) অপারেশন।
  2. Final Results: অ্যাকশন অপারেশনগুলি শুধু ডেটা ট্রান্সফরমেশন নয়, বরং আউটপুট তৈরি করে যা পরবর্তী ব্যবহার বা রাইটিংয়ের জন্য ব্যবহৃত হতে পারে।
  3. Performance Optimization: অ্যাকশন অপারেশনগুলি ব্যবহৃত হলে স্পার্ক DAG (Directed Acyclic Graph) তৈরি করে এবং কাজের কার্যকারিতা উন্নত করতে ক্যাটালিস্ট অপটিমাইজেশন প্রয়োগ করে।

Conclusion

স্পার্কের Actions অপারেশনগুলি অত্যন্ত গুরুত্বপূর্ণ কারণ তারা Transformation অপারেশনগুলি বাস্তবায়িত করে এবং ফাইনাল আউটপুট প্রদান করে। collect(), count(), reduce(), take() ইত্যাদি অ্যাকশন অপারেশনগুলি স্পার্ক অ্যাপ্লিকেশনের ফলাফল নির্ধারণ করে এবং সমস্ত ডেটাকে প্রক্রিয়া করার জন্য কার্যকরী। স্পার্কের lazy evaluation ধারণা অনুযায়ী, Actions শুধুমাত্র ডেটা প্রক্রিয়া চালানোর জন্য ট্রিগার হিসেবে কাজ করে, যা সিস্টেমের পারফরম্যান্সকে আরো উন্নত করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...