Uno de los combates de Flink: una exploración preliminar

Sobre el fregadero

La siguiente imagen es del funcionario de Flink. El cuadro rojo es el sumidero. Se puede ver que los datos en tiempo real comienzan en la Fuente y terminan en el sumidero después de completar la lógica de negocios en la etapa de Transformación. Por lo tanto, el sumidero se puede usar para procesar los resultados del cálculo, como la salida de la consola o guardar la base de datos:
Inserte la descripción de la imagen aquí

Una serie de artículos sobre "Combate de hundimiento de Flink"

Este artículo es la primera parte del "Combate del sumidero de Flink", cuyo objetivo es obtener una comprensión preliminar del sumidero. Mediante el análisis e investigación sobre la API básica y el método addSink, se sentará una base sólida para el posterior combate de codificación

Comience con un código de muestra

  1. El siguiente es un código simple de aplicación de parpadeo, el método de impresión en el cuadro rojo es la operación de sumidero:
    Inserte la descripción de la imagen aquí
  2. La siguiente figura es el método oficial de sumidero, que es la API de la clase DataStream. La llamada directa se puede utilizar para realizar el sumidero. La impresión en el código ahora es una de ellas:
    Inserte la descripción de la imagen aquí
  3. Luego, mire el código fuente de la API en la figura anterior. Primero mire el método de impresión. En DataStream.java, de la siguiente manera, se llama realmente al método addSink, y el parámetro de entrada es PrintSinkFunction:
    Inserte la descripción de la imagen aquí
  4. Otra API de uso común es writeAsText, el código fuente es el siguiente, el método writeUsingOutputFormat se llama:
    Inserte la descripción de la imagen aquí
  5. El seguimiento de writeUsingOutputFormat descubrió que addSink también se llamaba y que el parámetro de entrada era OutputFormatSinkFunction :
    Inserte la descripción de la imagen aquí
  6. AddSink se llama detrás de print y writeAsText, entonces, ¿qué pasa con otro método writeAsCsv comúnmente utilizado ? ¿Es posible llamar a addSink? Lo abrió y lo suficientemente seguro, y writeAsText como se pide writeUsingOutputFormat , y el método que está llamando addSink:
    Inserte la descripción de la imagen aquí
  7. En resumen, la clave del sumidero de datos es el parámetro de entrada de addSink , es decir , la implementación de la interfaz SinkFunction . A través del diagrama de clases, puede ver intuitivamente cómo se implementan las capacidades de sumidero comunes:
    Inserte la descripción de la imagen aquí
  8. De la figura anterior, podemos ver que la clase abstracta RichSinkFunction está estrechamente relacionada con varias capacidades de sumidero. Debemos centrarnos en ella y mostrar la firma del método en el diagrama de clases, como se muestra a continuación:
    Inserte la descripción de la imagen aquí
  9. Como se muestra en la figura anterior, RichSinkFunction en sí no tiene contenido, pero implementa SinkFunction y hereda AbstractRichFunction , que es una combinación de RichFunction y SinkFunction .
  10. Las características de RichFunction se han entendido en la "Trilogía de Flink DataSource" anterior , que es la apertura y cierre de recursos;
  11. ¿Cuáles son las características de SinkFunction ? Obviamente, se utiliza para procesar los resultados del cálculo. El diagrama de clase muestra dos métodos de invocación. Eche un vistazo al PrintSinkFunction.java oficial :
    Inserte la descripción de la imagen aquí
  12. El código fuente de writer.write (record) está en PrintSinkOutputWriter.java, como se muestra a continuación:
    Inserte la descripción de la imagen aquí

Resumen

Hasta ahora, tenemos una comprensión básica del fregadero de Flink:

  1. Responsable del procesamiento de resultados de cálculo en tiempo real (como salida o persistencia);
  2. El método de implementación principal es llamar al método DataStream.addSink;
  3. La forma principal de realizar varias capacidades de sumidero es implementar la interfaz definida por los parámetros de entrada del método addSink;

En los siguientes capítulos, realicemos juntos la codificación real del sumidero: la dirección del combate real: experimente las capacidades de sumidero provistas oficialmente e implemente capacidades de sumidero personalizadas;

Bienvenido a prestar atención a mi número público: programador Xinchen

Inserte la descripción de la imagen aquí

376 artículos originales publicados · elogiados 986 · 1.28 millones de visitas

Supongo que te gusta

Origin blog.csdn.net/boling_cavalry/article/details/105597628
Recomendado
Clasificación