অ্যাপাচি নিফাই (Apache NiFi) আপনাকে কাস্টম প্রোসেসর (Custom Processor) তৈরি করার সুযোগ দেয়, যা আপনার নির্দিষ্ট ডেটা প্রোসেসিং চাহিদা পূরণের জন্য কাজ করতে পারে। NiFi প্রোসেসরগুলি Java ভিত্তিক এবং আপনি যদি কোনো নির্দিষ্ট ডেটা প্রক্রিয়া করতে চান যা NiFi-এর বিল্ট-ইন প্রোসেসর দ্বারা সমর্থিত নয়, তবে কাস্টম প্রোসেসর তৈরি করা একটি উপযুক্ত সমাধান হতে পারে। এই গাইডে, আমরা NiFi-তে কাস্টম প্রোসেসর ডেভেলপমেন্ট (Java) সম্পর্কিত প্রক্রিয়া এবং পদক্ষেপগুলো বিস্তারিতভাবে আলোচনা করব।
কাস্টম প্রোসেসর তৈরি করতে, আপনাকে Java এবং NiFi-এর SDK (Software Development Kit) সম্পর্কে কিছু ধারণা থাকতে হবে। এছাড়া Maven এবং Java Development Kit (JDK) ইনস্টল করা থাকতে হবে।
NiFi এর কাস্টম প্রোসেসর তৈরি করার জন্য NiFi SDK ব্যবহার করতে হবে। এটি আপনাকে Java ক্লাস তৈরি, প্রোসেসর কনফিগার এবং কোড লেখার জন্য সহায়তা করবে।
NiFi SDK প্রোজেক্ট তৈরি করা: আপনি Maven বা Gradle ব্যবহার করে একটি নতুন প্রোজেক্ট তৈরি করতে পারেন।
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
<version>1.14.0</version> <!-- NiFi version-->
</dependency>
NiFi SDK মাভেন প্রকল্পের জন্য সেটআপ: Maven প্রোজেক্ট তৈরি করুন এবং pom.xml
ফাইলের মধ্যে নিচের ডিপেনডেন্সি যোগ করুন।
<dependencies>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
<version>1.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-processor-api</artifactId>
<version>1.14.0</version>
</dependency>
</dependencies>
NiFi-তে কাস্টম প্রোসেসর তৈরি করার জন্য, আপনাকে NiFi এর প্রোসেসর API ক্লাস ব্যবহার করতে হবে। একটি সাধারণ কাস্টম প্রোসেসরের জন্য একটি Java ক্লাস তৈরি করতে হবে যা AbstractProcessor
ক্লাস বা AbstractSession
ইন্টারফেসকে এক্সটেন্ড করবে।
package com.example.nifi.processor;
import org.apache.nifi.annotation.behavior.TriggerWhenEmpty;
import org.apache.nifi.processor.AbstractProcessor;
import org.apache.nifi.processor.ProcessContext;
import org.apache.nifi.processor.ProcessSession;
import org.apache.nifi.processor.exception.ProcessException;
import org.apache.nifi.flowfile.FlowFile;
import org.apache.nifi.annotation.lifecycle.OnScheduled;
import org.apache.nifi.annotation.lifecycle.OnStopped;
@TriggerWhenEmpty
public class CustomProcessor extends AbstractProcessor {
@Override
protected void init(final ProcessorInitializationContext context) {
// Initialization code here
}
@Override
public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException {
FlowFile flowFile = session.get();
if (flowFile != null) {
// Add your processing logic here
getLogger().info("Processing flowfile: " + flowFile.getAttribute("filename"));
session.transfer(flowFile, REL_SUCCESS);
}
}
@OnScheduled
public void onScheduled(final ProcessContext context) {
// Code to execute when the processor is scheduled
}
@OnStopped
public void onStopped() {
// Code to execute when the processor is stopped
}
}
কাস্টম প্রোসেসরের জন্য ইনপুট এবং আউটপুট রিলেশনশিপ (relationships) নির্ধারণ করতে হবে। NiFi প্রোসেসর বিভিন্ন স্টেট বা রিলেশনশিপ দ্বারা ট্রান্সফার করা ফ্লোফাইলগুলিকে নিয়ন্ত্রণ করে।
public static final Relationship REL_SUCCESS = new Relationship.Builder()
.name("success")
.description("Successfully processed flow files")
.build();
public static final Relationship REL_FAILURE = new Relationship.Builder()
.name("failure")
.description("Failed to process flow files")
.build();
@Override
public Set<Relationship> getRelationships() {
return Collections.singleton(REL_SUCCESS);
}
প্রোসেসর সাধারণত কনফিগারেবল প্রপার্টির মাধ্যমে কাস্টমাইজ করা যায়। NiFi প্রোসেসর কনফিগারেশনে প্রপার্টি ঘোষণা করতে @Property
অ্যাট্রিবিউট ব্যবহার করা হয়।
@Property(
name = "outputDirectory",
description = "Directory to write the output files",
defaultValue = "/tmp/output"
)
private String outputDirectory;
Builidng the Processor: একবার কাস্টম প্রোসেসরের কোড লেখা হয়ে গেলে, Maven বা অন্য কোন বিল্ড টুল ব্যবহার করে আপনার প্রোজেক্ট বিল্ড করুন।
mvn clean install
.nar
(NiFi Archive) ফাইল তৈরি হবে যা NiFi-তে ইনস্টল করা যাবে।.nar
ফাইলটি NiFi এর lib
ডিরেক্টরিতে কপি করুন এবং NiFi সার্ভিস রিস্টার্ট করুন।NiFi UI তে কাস্টম প্রোসেসর ডিপ্লয় করার পরে, আপনাকে সেগুলির কার্যকারিতা নিশ্চিত করতে হবে। NiFi তে লগিং ব্যবস্থাও আছে, যা ডিবাগিং এবং মনিটরিং এর জন্য খুবই সহায়ক।
getLogger().info("Custom Processor executed successfully");
অ্যাপাচি নিফাই তে কাস্টম প্রোসেসর ডেভেলপমেন্ট আপনাকে নির্দিষ্ট ডেটা প্রক্রিয়াগুলির জন্য প্রোসেসর তৈরি করার সুযোগ দেয়, যা নিফাইয়ের বিল্ট-ইন প্রোসেসরগুলি দ্বারা সমর্থিত নয়। Java ভিত্তিক কাস্টম প্রোসেসর তৈরি করতে আপনাকে NiFi এর SDK ব্যবহার করতে হবে, প্রোসেসরের ইনপুট এবং আউটপুট সম্পর্ক, প্রপার্টি কনফিগারেশন এবং অন্যান্য কাস্টম লজিক যুক্ত করতে হবে। একবার প্রোসেসর তৈরি হয়ে গেলে, আপনি এটি NiFi UI তে ব্যবহার এবং পরীক্ষণ করতে পারবেন, যা আপনার ডেটা প্রোসেসিং কাজকে আরও কার্যকরী এবং কাস্টমাইজড করে তোলে।
common.read_more