প্রকল্প সম্পর্কে
এই প্রজেক্টটি সম্পূর্ণ 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
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.