अपाचे फ्लिंक - एपीआई कॉन्सेप्ट

फ्लिंक में एपीआई का एक समृद्ध सेट है, जिसके उपयोग से डेवलपर्स बैच और रीयल-टाइम डेटा दोनों पर रूपांतरण कर सकते हैं। विभिन्न प्रकार के परिवर्तनों में मैपिंग, फ़िल्टरिंग, सॉर्टिंग, जॉइनिंग, ग्रुपिंग और एग्रीगेटिंग शामिल हैं। Apache Flink द्वारा ये परिवर्तन वितरित डेटा पर किए जाते हैं। आइए हम विभिन्न एपीआई अपाचे फ्लिंक प्रस्तावों पर चर्चा करें।

डेटासेट एपीआई

Apache Flink में Dataset API का उपयोग किसी अवधि में डेटा पर बैच संचालन करने के लिए किया जाता है। इस एपीआई का उपयोग जावा, स्काला और पायथन में किया जा सकता है। यह डेटासेट पर फ़िल्टरिंग, मैपिंग, एग्रीगेटिंग, जॉइनिंग और ग्रुपिंग जैसे विभिन्न प्रकार के परिवर्तनों को लागू कर सकता है।

डेटासेट स्थानीय फ़ाइलों जैसे स्रोतों से या किसी विशेष स्रोत से किसी फ़ाइल को पढ़कर बनाया जाता है और परिणाम डेटा को वितरित फ़ाइलों या कमांड लाइन टर्मिनल जैसे विभिन्न सिंक पर लिखा जा सकता है। यह एपीआई जावा और स्काला प्रोग्रामिंग दोनों भाषाओं द्वारा समर्थित है।

यहाँ डेटासेट एपीआई का एक वर्डकाउंट कार्यक्रम है -

public class WordCountProg {
   public static void main(String[] args) throws Exception {
      final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

      DataSet<String> text = env.fromElements(
      "Hello",
      "My Dataset API Flink Program");

      DataSet<Tuple2<String, Integer>> wordCounts = text
      .flatMap(new LineSplitter())
      .groupBy(0)
      .sum(1);

      wordCounts.print();
   }

   public static class LineSplitter implements FlatMapFunction<String, Tuple2<String, Integer>> {
      @Override
      public void flatMap(String line, Collector<Tuple2<String, Integer>> out) {
         for (String word : line.split(" ")) {
            out.collect(new Tuple2<String, Integer>(word, 1));
         }
      }
   }
}

DataStream API

इस एपीआई का उपयोग निरंतर स्ट्रीम में डेटा को संभालने के लिए किया जाता है। आप स्ट्रीम डेटा पर फ़िल्टरिंग, मैपिंग, विंडोिंग, एग्रीगेटिंग जैसे विभिन्न ऑपरेशन कर सकते हैं। इस डेटा स्ट्रीम पर विभिन्न स्रोत हैं जैसे संदेश कतार, फाइलें, सॉकेट स्ट्रीम और परिणाम डेटा को कमांड लाइन टर्मिनल जैसे विभिन्न सिंक पर लिखा जा सकता है। जावा और स्काला प्रोग्रामिंग दोनों भाषाएँ इस एपीआई का समर्थन करती हैं।

यहां डेटास्ट्रीम एपीआई का एक स्ट्रीमिंग वर्डकाउंट प्रोग्राम है, जहां आपके पास वर्ड काउंट की निरंतर स्ट्रीम होती है और डेटा को दूसरी विंडो में समूहीकृत किया जाता है।

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.windowing.time.Time;
import org.apache.flink.util.Collector;
public class WindowWordCountProg {
   public static void main(String[] args) throws Exception {
      StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
      DataStream<Tuple2<String, Integer>> dataStream = env
      .socketTextStream("localhost", 9999)
      .flatMap(new Splitter())
      .keyBy(0)
      .timeWindow(Time.seconds(5))
      .sum(1);
      dataStream.print();
      env.execute("Streaming WordCount Example");
   }
   public static class Splitter implements FlatMapFunction<String, Tuple2<String, Integer>> {
      @Override
      public void flatMap(String sentence, Collector<Tuple2<String, Integer>> out) throws Exception {
         for (String word: sentence.split(" ")) {
            out.collect(new Tuple2<String, Integer>(word, 1));
         }
      }
   }
}