Apache Flink-এ Data Sources এবং Sinks হলো ডেটা প্রসেসিং পিপলাইনের দুটি মূল উপাদান যা ইনপুট ডেটা সংগ্রহ এবং আউটপুট ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। Flink বিভিন্ন ধরনের ডেটা সোর্স এবং সিংক সাপোর্ট করে, যা বিভিন্ন ডেটা সিস্টেমের সাথে ইন্টিগ্রেশন সহজ করে তোলে।
Data Source হলো Flink অ্যাপ্লিকেশনের ইনপুট ডেটার উৎস। এটি বিভিন্ন ধরনের ডেটা সিস্টেম বা স্টোরেজ থেকে ডেটা সংগ্রহ করে এবং Flink স্ট্রিম প্রসেসিং ইঞ্জিনে প্রেরণ করে। Flink অনেকগুলি বিল্ট-ইন সোর্স সাপোর্ট করে যেমন:
উদাহরণ (File Source):
DataStream<String> textStream = env.readTextFile("path/to/textfile.txt");
Kafka Source উদাহরণ:
FlinkKafkaConsumer<String> kafkaConsumer = new FlinkKafkaConsumer<>(
"topic_name",
new SimpleStringSchema(),
properties
);
DataStream<String> kafkaStream = env.addSource(kafkaConsumer);
বর্ণনা: এখানে FlinkKafkaConsumer
ব্যবহার করে Kafka থেকে একটি স্ট্রিম পড়া হচ্ছে, যা নির্দিষ্ট topic
থেকে ডেটা সংগ্রহ করছে।
Data Sink হলো Flink অ্যাপ্লিকেশনের আউটপুট যেখানে প্রক্রিয়াকৃত ডেটা সংরক্ষণ করা হয়। এটি ডেটাকে বিভিন্ন আউটপুট ডেস্টিনেশন যেমন ফাইল, ডাটাবেস, মেসেজিং সিস্টেমে পাঠানোর জন্য ব্যবহৃত হয়। Flink এর বেশ কিছু বিল্ট-ইন সিংক রয়েছে:
উদাহরণ (File Sink):
resultStream.writeAsText("path/to/outputfile.txt", FileSystem.WriteMode.OVERWRITE);
Kafka Sink উদাহরণ:
FlinkKafkaProducer<String> kafkaProducer = new FlinkKafkaProducer<>(
"output_topic",
new SimpleStringSchema(),
properties
);
resultStream.addSink(kafkaProducer);
বর্ণনা: এখানে, প্রক্রিয়াকৃত ডেটা Kafka-তে output_topic
নামে একটি টপিকে প্রেরণ করা হচ্ছে।
Flink-এর Data Sources এবং Sinks ইন্টিগ্রেশন করার সময় নিম্নোক্ত ধাপগুলি অনুসরণ করতে হয়:
Flink-এ, প্রয়োজন অনুযায়ী Custom Sources এবং Sinks তৈরি করা যায়। কাস্টম সোর্স বা সিংক তৈরি করার সময়, SourceFunction
বা SinkFunction
ইন্টারফেস ইমপ্লিমেন্ট করতে হয়।
Custom Source উদাহরণ:
public class CustomStringSource implements SourceFunction<String> {
@Override
public void run(SourceContext<String> ctx) throws Exception {
while (true) {
ctx.collect("Custom Data");
Thread.sleep(1000);
}
}
@Override
public void cancel() {
// Cleanup code
}
}
Custom Sink উদাহরণ:
public class CustomPrintSink implements SinkFunction<String> {
@Override
public void invoke(String value, Context context) {
System.out.println("Output: " + value);
}
}
Apache Flink-এ Data Sources এবং Sinks ইন্টিগ্রেশন করা স্ট্রিম এবং ব্যাচ প্রসেসিং অ্যাপ্লিকেশনের একটি গুরুত্বপূর্ণ অংশ। Flink এর স্ট্যান্ডার্ড সোর্স এবং সিংক সাপোর্ট করে বিভিন্ন ডেটা স্টোরেজ এবং মেসেজিং সিস্টেমের সাথে সহজেই ইন্টিগ্রেট করা যায়। এছাড়াও, কাস্টম সোর্স এবং সিংক তৈরি করে ফ্লেক্সিবিলিটি আরও বাড়ানো যায়।
আরও দেখুন...