অ্যাপাচি টিকা (Apache Tika) এবং বিগ ডেটা টেকনোলজির ইন্টিগ্রেশন বিভিন্ন ধরনের আনস্ট্রাকচার্ড ডেটা প্রসেস করতে এবং বিশাল পরিমাণ ফাইল থেকে টেক্সট এবং মেটাডেটা এক্সট্রাক্ট করতে সহায়তা করে। এটি হাডুপ (Hadoop), স্পার্ক (Apache Spark) এবং অন্যান্য বিগ ডেটা ফ্রেমওয়ার্কের সাথে একত্রে ব্যবহার করা যায়।
কেন Tika এবং Big Data একসাথে ব্যবহার করবেন?
- আনস্ট্রাকচার্ড ডেটা প্রসেসিং: বিভিন্ন ধরনের ফাইল (PDF, Word, ইমেজ) থেকে টেক্সট এক্সট্রাক্ট করা।
- স্কেলেবিলিটি: বড় আকারের ডেটাসেট পার্স করা।
- ইন্টিগ্রেশন: হাডুপ এবং স্পার্ক-এর মতো টুলের মাধ্যমে প্যারালাল প্রসেসিং।
- ডেটা অ্যানালাইসিস: এক্সট্রাক্ট করা ডেটা বিশ্লেষণ এবং ইনডেক্সিং করা।
Apache Tika এবং Hadoop Integration
Hadoop-এর ভূমিকা:
Apache Hadoop একটি ডিস্ট্রিবিউটেড স্টোরেজ এবং প্রসেসিং প্ল্যাটফর্ম। Tika ব্যবহার করে ফাইল থেকে ডেটা এক্সট্রাক্ট করে Hadoop-এ সংরক্ষণ এবং প্রসেস করা যায়।
উদাহরণ: Tika এবং Hadoop MapReduce
এই উদাহরণে একটি হাডুপ ম্যাপরিডিউস (MapReduce) জব তৈরি করা হয়েছে যা Tika ব্যবহার করে ফাইল থেকে টেক্সট এক্সট্রাক্ট করে এবং প্রসেস করে।
১. প্রয়োজনীয় ডিপেন্ডেন্সি (Maven):
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.2.1</version>
</dependency>
২. MapReduce কোড উদাহরণ:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.tika.Tika;
import java.io.File;
import java.io.IOException;
public class TikaHadoopExample {
public static class TikaMapper extends Mapper<Object, Text, Text, Text> {
private Tika tika = new Tika();
public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
File file = new File(value.toString());
String extractedText = tika.parseToString(file);
context.write(new Text(file.getName()), new Text(extractedText));
}
}
public static class TikaReducer extends Reducer<Text, Text, Text, Text> {
public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
for (Text val : values) {
context.write(key, val);
}
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "Tika Hadoop Integration");
job.setJarByClass(TikaHadoopExample.class);
job.setMapperClass(TikaMapper.class);
job.setReducerClass(TikaReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
কোড ব্যাখ্যা:
- TikaMapper: Tika ব্যবহার করে ফাইলের কন্টেন্ট পড়ে এবং টেক্সট এক্সট্রাক্ট করে।
- TikaReducer: এক্সট্রাক্ট করা টেক্সট সংরক্ষণ করে।
- Input: বিভিন্ন ফাইল (PDF, Word, ইমেজ)।
- Output: এক্সট্রাক্ট করা টেক্সট হাডুপের আউটপুট ডিরেক্টরিতে সংরক্ষিত হবে।
কমান্ড লাইন থেকে রান করার ধাপ:
১. JAR ফাইল তৈরি করুন:
mvn clean package
২. Hadoop Job রান করুন:
hadoop jar tika-hadoop-example.jar TikaHadoopExample input_directory output_directory
Apache Tika এবং Apache Spark Integration
Spark-এর ভূমিকা
Apache Spark একটি ইন-মেমরি ডেটা প্রসেসিং টুল। Tika Spark এর RDD (Resilient Distributed Dataset) ব্যবহার করে ফাইল প্রসেস করতে পারে।
উদাহরণ: Tika এবং Spark কোড
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.SparkConf;
import org.apache.tika.Tika;
import java.io.File;
public class TikaSparkExample {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("Tika Spark Integration").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
Tika tika = new Tika();
JavaRDD<String> files = sc.wholeTextFiles("input_directory")
.map(file -> tika.parseToString(new File(file._1())));
files.saveAsTextFile("output_directory");
sc.close();
}
}
কোড ব্যাখ্যা:
- SparkConf: Spark অ্যাপ্লিকেশন কনফিগারেশন।
- wholeTextFiles(): ডিরেক্টরি থেকে ফাইল পড়ে।
- Tika.parseToString(): Tika ব্যবহার করে টেক্সট এক্সট্রাক্ট করে।
- saveAsTextFile(): প্রসেস করা ডেটা আউটপুট ডিরেক্টরিতে সংরক্ষণ করে।
সারাংশ
Apache Tika এবং বিগ ডেটা টেকনোলজি যেমন Hadoop ও Spark-এর ইন্টিগ্রেশন আনস্ট্রাকচার্ড ডেটা প্রসেসিংকে সহজ এবং স্কেলেবল করে তোলে। Tika ফাইল থেকে টেক্সট ও মেটাডেটা এক্সট্রাক্ট করে এবং বিগ ডেটা ফ্রেমওয়ার্ক বিশাল পরিমাণ ডেটা প্রসেস করতে ব্যবহার করে। এটি ডেটা অ্যানালাইসিস, সার্চ এবং রিপোর্টিং সলিউশনের জন্য আদর্শ সমাধান।
Read more