প্রকল্প সম্পর্কে

এই প্রজেক্টটি সম্পূর্ণ Docker-কর্তৃক আবদ্ধ একটি লোকাল রিয়েল-টাইম স্ট্রিমিং অ্যানালিটিক্স পাইপলাইন সরবরাহ করে, যা Spark Structured Streaming ধারণাগুলো প্রদর্শন করে কোনো ক্লাউড অ্যাকাউন্ট ছাড়াই। ## এটি কী করে একটি Python প্রোডিউসার Redpanda টপিকে (Kafka-সহায়ক) পাঠানো ক্লিকস্ট্রিম ইভেন্ট সিমুলেট করে, এবং একটি PySpark Structured Streaming জব সেই ইভেন্ট কানজুম করে, লেট ইভেন্টের জন্য ওয়াটারমার্কিং সহ ১-মিনিটের টাম্বলিং উইন্ডো এগ্রিগেশন প্রয়োগ করে, এবং ফলাফল কনসোল বা Parquet ফাইলে আউটপুট করে। ## আর্কিটেকচার - **Python প্রোডিউসার**: URL এবং টাইমস্ট্যাম্প ডেটা সহ সিমুলেটেড ক্লিকস্ট্রিম JSON ইভেন্ট তৈরি করে - **Redpanda**: Kafka-সহায়ক ব্রোকার ডকারে চলে, Zookeeper-এর প্রয়োজন নেই - **PySpark Structured Streaming**: অসীম DataFrame হিসেবে Kafka থেকে রিড করে, eksplisit স্কিম সাথে JSON প্যার্স করে, ইভেন্ট-টাইম উইন্ডোয়িং ওয়াটারমার্ক সহ প্রয়োগ করে, এবং প্রতিটি উইন্ডোর প্রতি URL-এর জন্য পেজ-ভিউ কাউন্ট এগ্রিগেট করে ## মূল ধারণা - Spark Structured Streaming দিয়ে Kafka টপিককে অসীম DataFrame হিসেবে পড়া - স্কিমা-অন-রিড দিয়ে JSON ইভেন্ট পেলোড প্যার্স করা - লেট-আরিভিং ইভেন্ট হ্যান্ডেল করতে ওয়াটারমার্কিং সহ ইভেন্ট-টাইম উইন্ডোয়িং (১-মিনিটের টাম্বলিং উইন্ডো) - প্রতি URL-এর মাইক্রো-বেচ এগ্রিগেশন - শেখার জন্য কনসোলে আউটপুট, স্থায়িত্বের জন্য Parquet sink অপশন ## প্রজেক্ট গঠন ``` streaming-pipeline-kafka-spark/ ├── docker-compose.yml # Redpanda + Spark কন্টেইনার ├── producer/ │ └── click_event_producer.py # সিমুলেটেড ক্লিকস্ট্রিম প্রোডিউসার ├── spark_app/ │ └── streaming_aggregation.py # Structured Streaming জব └── requirements.txt ``` ## শুরু করার উপায় ```bash git clone https://github.com/Kornelius99/streaming-pipeline-kafka-spark.git cd streaming-pipeline-kafka-spark docker-compose up -d # টার্মিনাল ১: ইভেন্ট প্রোডিউস শুরু করুন python producer/click_event_producer.py # টার্মিনাল ২: Spark Streaming জব চালান docker-compose exec spark spark-submit \ --packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.5.1 \ /opt/spark_app/streaming_aggregation.py ``` ফলাফল কনসোলে ১-মিনিটের উইন্ডোয়ড পেজ-ভিউ কাউন্ট হিসেবে প্রদর্শিত হয়, নতুন ইভেন্ট আসতে থাকলে আপডেট হয়। ## কেন Redpanda Redpanda Kafka প্রোটোকল ব্যবহার করে তাই বিদ্যমান Kafka ক্লায়েন্ট কোড পরিবর্তন ছাড়াই কাজ করে, কিন্তু এটি Zookeeper-বিহীন একক কন্টেইনার হিসেবে আসে, যা শেখার উদ্দেশ্যে docker-compose-এর সরলতা বজায় রাখে। ## লাইসেন্স MIT