Flink имеет богатый набор API-интерфейсов, с помощью которых разработчики могут выполнять преобразования как пакетных данных, так и данных в реальном времени. Разнообразные преобразования включают в себя отображение, фильтрацию, сортировку, объединение, группирование и агрегирование. Эти преобразования Apache Flink выполняются для распределенных данных. Давайте обсудим различные API, предлагаемые Apache Flink.
API набора данных
API набора данных в Apache Flink используется для выполнения пакетных операций с данными за период. Этот API может использоваться в Java, Scala и Python. Он может применять различные виды преобразований к наборам данных, такие как фильтрация, отображение, агрегирование, объединение и группировка.
Наборы данных создаются из таких источников, как локальные файлы, или путем чтения файла из определенного источника, и данные результатов могут быть записаны в различные приемники, такие как распределенные файлы или терминал командной строки. Этот API поддерживается языками программирования Java и Scala.
Вот программа Wordcount API Dataset —
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
Этот API используется для обработки данных в непрерывном потоке. Вы можете выполнять различные операции, такие как фильтрация, отображение, управление окнами, агрегация данных потока. В этом потоке данных есть различные источники, такие как очереди сообщений, файлы, потоки сокетов, и данные результатов могут быть записаны в различные приемники, такие как терминал командной строки. Оба языка программирования Java и Scala поддерживают этот API.
Вот потоковая программа Wordcount API DataStream, где у вас есть непрерывный поток подсчетов слов, и данные группируются во втором окне.