Apache Flink — это платформа потоковой обработки с открытым исходным кодом и мощными возможностями потоковой и пакетной обработки.
Узнайте больше о Flink на https://flink.apache.org/.
Среда выполнения, ориентированная на потоковую передачу, которая поддерживает программы пакетной обработки и потоковой передачи данных.
Элегантные и гибкие API на Java
Среда выполнения, которая одновременно поддерживает очень высокую пропускную способность и низкую задержку событий.
Поддержка времени событий и обработки вне очереди в API DataStream на основе модели потока данных .
Гибкое управление окнами (время, количество, сеансы, пользовательские триггеры) для различной временной семантики (время события, время обработки)
Отказоустойчивость с гарантиями ровно однократной обработки
Естественное противодавление в потоковых программах
Библиотеки для обработки графов (пакетная обработка), машинного обучения (пакетная обработка) и обработки сложных событий (потоковая передача)
Настраиваемое управление памятью для эффективного и надежного переключения между алгоритмами обработки данных в памяти и вне ядра.
Уровни совместимости для Apache Hadoop MapReduce
Интеграция с YARN, HDFS, HBase и другими компонентами экосистемы Apache Hadoop.
// pojo class WordWithCount
public class WordWithCount {
public String word ;
public int count ;
public WordWithCount () {}
public WordWithCount ( String word , int count ) {
this . word = word ;
this . count = count ;
}
}
// main method
StreamExecutionEnvironment env = StreamExecutionEnvironment . getExecutionEnvironment ();
DataStreamSource < String > text = env . socketTextStream ( host , port );
DataStream < WordWithCount > windowCounts = text
. flatMap (
( FlatMapFunction < String , String >) ( line , collector )
-> Arrays . stream ( line . split ( " \ s" )). forEach ( collector :: collect )
). returns ( String . class )
. map ( word -> new WordWithCount ( word , 1 )). returns ( TypeInformation . of ( WordWithCount . class ))
. keyBy ( wordWithCnt -> wordWithCnt . word )
. window ( TumblingProcessingTimeWindows . of ( Duration . ofSeconds ( 5 )))
. sum ( "count" ). returns ( TypeInformation . of ( WordWithCount . class ));
windowCounts . print ();
env . execute ();
}
// pojo class WordWithCount
public class WordWithCount {
public String word ;
public int count ;
public WordWithCount () {}
public WordWithCount ( String word , int count ) {
this . word = word ;
this . count = count ;
}
}
// main method
StreamExecutionEnvironment env = StreamExecutionEnvironment . getExecutionEnvironment ();
env . setRuntimeMode ( RuntimeExecutionMode . BATCH );
FileSource < String > source = FileSource . forRecordStreamFormat ( new TextLineInputFormat (), new Path ( "MyInput.txt" )). build ();
DataStreamSource < String > text = env . fromSource ( source , WatermarkStrategy . noWatermarks (), "MySource" );
DataStream < WordWithCount > windowCounts = text
. flatMap (( FlatMapFunction < String , String >) ( line , collector ) -> Arrays
. stream ( line . split ( " \ s" ))
. forEach ( collector :: collect )). returns ( String . class )
. map ( word -> new WordWithCount ( word , 1 )). returns ( TypeInformation . of ( WordWithCount . class ))
. keyBy ( wordWintCount -> wordWintCount . word )
. sum ( "count" ). returns ( TypeInformation . of ( WordWithCount . class ));
windowCounts . print ();
env . execute ();
Предварительные условия для создания Флинка:
git clone https://github.com/apache/flink.git
cd flink
./mvnw clean package -DskipTests # this will take up to 10 minutes
Flink теперь установлен в build-target
.
Коммиттеры Flink используют IntelliJ IDEA для разработки кодовой базы Flink. Мы рекомендуем IntelliJ IDEA для разработки проектов, использующих код Scala.
Минимальные требования к IDE:
IntelliJ IDE поддерживает Maven «из коробки» и предлагает плагин для разработки на Scala.
Подробную информацию можно найти в нашем руководстве по настройке IntelliJ.
ПРИМЕЧАНИЕ. По нашему опыту, эта настройка не работает с Flink из-за недостатков старой версии Eclipse, поставляемой в комплекте со Scala IDE 3.0.3, или из-за несовместимости версий со встроенной версией Scala в Scala IDE 4.4.1.
Вместо этого мы рекомендуем использовать IntelliJ (см. выше).
Не стесняйтесь спрашивать!
Если вам нужна помощь, свяжитесь с разработчиками и сообществом в списках рассылки.
Откройте проблему, если обнаружите ошибку во Flink.
Документация Apache Flink находится на сайте: https://flink.apache.org или в каталоге docs/
исходного кода.
Это активный проект с открытым исходным кодом. Мы всегда открыты для людей, которые хотят использовать систему или внести в нее свой вклад. Свяжитесь с нами, если вы ищете задачи по реализации, соответствующие вашим навыкам. В этой статье описывается, как внести свой вклад в Apache Flink.
Большинство соединителей Flink были экспортированы в отдельные репозитории в рамках Apache Software Foundation:
Apache Flink — это проект с открытым исходным кодом Apache Software Foundation (ASF). Проект Apache Flink зародился на основе исследовательского проекта «Стратосфера».