Apache Flink es un marco de procesamiento de flujos de código abierto con potentes capacidades de procesamiento de flujos y por lotes.
Obtenga más información sobre Flink en https://flink.apache.org/
Un tiempo de ejecución de transmisión que admite programas de procesamiento por lotes y transmisión de datos
API elegantes y fluidas en Java
Un tiempo de ejecución que admite un rendimiento muy alto y una latencia de eventos baja al mismo tiempo
Soporte para tiempo de evento y procesamiento desordenado en la API DataStream, basado en el modelo de flujo de datos
Ventanas flexibles (tiempo, recuento, sesiones, activadores personalizados) en diferentes semánticas de tiempo (hora del evento, tiempo de procesamiento)
Tolerancia a fallos con garantías de procesamiento exactamente una vez
Contrapresión natural en programas de streaming
Bibliotecas para procesamiento de gráficos (por lotes), aprendizaje automático (por lotes) y procesamiento de eventos complejos (transmisión)
Gestión de memoria personalizada para una conmutación eficiente y sólida entre algoritmos de procesamiento de datos en memoria y fuera del núcleo
Capas de compatibilidad para Apache Hadoop MapReduce
Integración con YARN, HDFS, HBase y otros componentes del ecosistema 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 ();
Requisitos previos para construir Flink:
git clone https://github.com/apache/flink.git
cd flink
./mvnw clean package -DskipTests # this will take up to 10 minutes
Flink ahora está instalado en build-target
.
Los autores de Flink utilizan IntelliJ IDEA para desarrollar el código base de Flink. Recomendamos IntelliJ IDEA para desarrollar proyectos que involucren código Scala.
Los requisitos mínimos para un IDE son:
El IDE de IntelliJ es compatible con Maven desde el primer momento y ofrece un complemento para el desarrollo de Scala.
Consulte nuestra guía de configuración de IntelliJ para obtener más detalles.
NOTA: Según nuestra experiencia, esta configuración no funciona con Flink debido a deficiencias de la versión anterior de Eclipse incluida con Scala IDE 3.0.3 o debido a incompatibilidades de versión con la versión de Scala incluida en Scala IDE 4.4.1.
Recomendamos utilizar IntelliJ en su lugar (ver arriba)
¡No dudes en preguntar!
Póngase en contacto con los desarrolladores y la comunidad en las listas de correo si necesita ayuda.
Abra un problema si encuentra un error en Flink.
La documentación de Apache Flink se encuentra en el sitio web: https://flink.apache.org o en el directorio docs/
del código fuente.
Este es un proyecto activo de código abierto. Siempre estamos abiertos a personas que quieran utilizar el sistema o contribuir a él. Contáctenos si está buscando tareas de implementación que se ajusten a sus habilidades. Este artículo describe cómo contribuir a Apache Flink.
La mayoría de los conectores de Flink se han externalizado a repositorios individuales bajo Apache Software Foundation:
Apache Flink es un proyecto de código abierto de The Apache Software Foundation (ASF). El proyecto Apache Flink se originó a partir del proyecto de investigación Stratosphere.