HBase এ ডেটা ফিল্টারিং একটি গুরুত্বপূর্ণ ফিচার, যার মাধ্যমে নির্দিষ্ট শর্তের ভিত্তিতে ডেটা রিটার্ন করা হয়। HBase তে একাধিক ফিল্টার প্রয়োগ করার জন্য FilterList ব্যবহার করা হয়। FilterList ব্যবহার করে আপনি একাধিক ফিল্টার একত্রিত করতে পারেন, যা একটি কার্যকরী এবং নমনীয় ফিল্টারিং প্রক্রিয়া তৈরি করে।
FilterList কী?
FilterList একটি HBase ফিল্টার যা একাধিক ফিল্টারকে একত্রিত (combine) করে, এবং বিভিন্ন ফিল্টারিং শর্তের মধ্যে সম্পর্ক নির্ধারণ করতে সহায়তা করে। এর মাধ্যমে, আপনি AND, OR, এবং NOT অপারেটর ব্যবহার করে একাধিক ফিল্টার প্রয়োগ করতে পারেন।
HBase তে Filter মূলত ডেটার উপর শর্ত প্রয়োগ করতে ব্যবহৃত হয়। FilterList এর মাধ্যমে একাধিক ফিল্টার একত্রিত করে কমপ্লেক্স শর্ত তৈরি করা হয়, যা ডেটা খোঁজার সময় কার্যক্ষমতা এবং নমনীয়তা বৃদ্ধি করে।
FilterList কিভাবে কাজ করে?
HBase তে FilterList সাধারণত Filter কম্বিনেশন তৈরি করতে ব্যবহৃত হয়, যেখানে একাধিক ফিল্টার লজিক্যাল অপারেটর দিয়ে যুক্ত করা হয়। FilterList তিনটি অপারেটরের সাহায্যে ফিল্টার গুলিকে একত্রিত করতে পারে:
- MUST_PASS_ALL: AND অপারেটর ব্যবহার করে, যেখানে সকল ফিল্টার পাস হতে হবে।
- MUST_PASS_ONE: OR অপারেটর ব্যবহার করে, যেখানে কমপক্ষে একটি ফিল্টার পাস হতে হবে।
- MUST_NOT_PASS: NOT অপারেটর ব্যবহার করে, যেখানে ফিল্টারটি পাস না হলে হবে।
FilterList ব্যবহার করার উদাহরণ
ধরা যাক, আমরা একটি students টেবিলের মধ্যে এমন ডেটা খুঁজছি, যেখানে ছাত্রের নাম John এবং তার গ্রেড A। এখানে দুটি ফিল্টার হবে: একটি ফিল্টার নামের জন্য এবং একটি ফিল্টার গ্রেডের জন্য। এখন, আমরা FilterList ব্যবহার করে একাধিক ফিল্টার প্রয়োগ করব।
1. MUST_PASS_ALL (AND):
MUST_PASS_ALL ব্যবহার করা হলে, সকল শর্ত পূর্ণ হলে তবেই রো রিটার্ন হবে।
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.conf.Configuration;
public class HBaseFilterListExample {
public static void main(String[] args) throws Exception {
Configuration config = HBaseConfiguration.create();
HTable table = new HTable(config, "students");
// Create filters
SingleColumnValueFilter nameFilter = new SingleColumnValueFilter(
Bytes.toBytes("personal"), // column family
Bytes.toBytes("name"), // column
CompareFilter.CompareOp.EQUAL, // operation
Bytes.toBytes("John") // value
);
SingleColumnValueFilter gradeFilter = new SingleColumnValueFilter(
Bytes.toBytes("academic"),
Bytes.toBytes("grade"),
CompareFilter.CompareOp.EQUAL,
Bytes.toBytes("A")
);
// Combine filters with AND logic
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
filterList.addFilter(nameFilter);
filterList.addFilter(gradeFilter);
// Scan table with filters
Scan scan = new Scan();
scan.setFilter(filterList);
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) {
System.out.println("Found row: " + result);
}
}
}
এখানে, FilterList.Operator.MUST_PASS_ALL ব্যবহার করা হয়েছে, যার মানে হল যে nameFilter এবং gradeFilter উভয়কেই সন্তুষ্ট করতে হবে। শুধুমাত্র সেই রো গুলি রিটার্ন হবে, যেখানে ছাত্রের নাম John এবং গ্রেড A হবে।
2. MUST_PASS_ONE (OR):
MUST_PASS_ONE ব্যবহার করা হলে, কমপক্ষে একটি শর্ত পূর্ণ হলেই রো রিটার্ন হবে।
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);
filterList.addFilter(nameFilter);
filterList.addFilter(gradeFilter);
এখানে, MUST_PASS_ONE অপারেটর ব্যবহার করা হয়েছে, যার মানে হল যে কমপক্ষে একটি শর্ত পূর্ণ হলেই রো রিটার্ন হবে। যদি ছাত্রের নাম John হয় বা গ্রেড A হয়, তাহলে সেই রো রিটার্ন হবে।
3. MUST_NOT_PASS (NOT):
MUST_NOT_PASS ব্যবহার করা হলে, ফিল্টারটি যদি পাস না করে, তবে রো রিটার্ন হবে।
SingleColumnValueFilter notNameFilter = new SingleColumnValueFilter(
Bytes.toBytes("personal"),
Bytes.toBytes("name"),
CompareFilter.CompareOp.NOT_EQUAL,
Bytes.toBytes("John")
);
FilterList filterList = new FilterList(FilterList.Operator.MUST_NOT_PASS);
filterList.addFilter(notNameFilter);
এখানে, MUST_NOT_PASS ফিল্টারটি নিশ্চিত করবে যে যদি ছাত্রের নাম John না হয়, তাহলে সেই রো রিটার্ন হবে।
FilterList ব্যবহার করার সুবিধা
- নমনীয়তা: FilterList ব্যবহার করে আপনি একাধিক ফিল্টার শর্ত যুক্ত করতে পারেন, যা অত্যন্ত নমনীয় এবং কার্যকরী।
- পারফরম্যান্স উন্নতি: একাধিক ফিল্টার ব্যবহার করে, আপনি আপনার ডেটার মধ্যে অপ্রয়োজনীয় রো গুলি বাদ দিতে পারেন, যার ফলে স্ক্যানের সময় দ্রুত এবং কার্যকরী হয়।
- লজিক্যাল অপারেটর: FilterList এর মাধ্যমে আপনি লজিক্যাল অপারেটর (AND, OR, NOT) ব্যবহার করে ফিল্টার প্রয়োগ করতে পারেন, যা আরও শক্তিশালী ফিল্টারিং সুযোগ প্রদান করে।
সারাংশ
HBase তে FilterList একটি অত্যন্ত শক্তিশালী ফিচার, যা একাধিক ফিল্টারকে একটি একক ইউনিটে সংযুক্ত করতে ব্যবহৃত হয়। এটি AND, OR, এবং NOT অপারেটর ব্যবহার করে, ফিল্টারগুলির মধ্যে লজিক্যাল সম্পর্ক তৈরি করতে সক্ষম করে। FilterList ব্যবহার করে, আপনি খুবই কার্যকরীভাবে ডেটা খোঁজা এবং ফিল্টার করতে পারেন, যার ফলে ডেটা অ্যাক্সেসের গতি বৃদ্ধি পায় এবং পারফরম্যান্স উন্নত হয়।
Read more