Flink SQL crea algo de la nada

CorePress2024-01-24  10

Antes pregunté si Flink podía crear algo a partir de la nada y la respuesta es sí. Ahora estoy analizando más específicamente las capacidades de Flink SQL.

En SQL, este tipo de desafío a veces es fácil (por ejemplo, SELECT 1 funciona en motores normales como MySQL), pero también a veces es imposible, por ejemplo, Apache Pig no puede crear algo a partir de la nada.

No estoy seguro acerca de Flink SQL, la idea es, por supuesto, que con la capacidad de crear algo a partir de la nada, elimine cualquier dependencia estricta de otras soluciones cuando desee ejecutar una prueba rápida o crear un ejemplo portátil.

En aras de la simplicidad: Supongamos que quiero generar al menos 1 mensaje por segundo y no me importa lo que haya dentro.

Mis primeros pensamientos:

Una simple declaración de selecciónNo funciona, ya que no obtienes ningún resultado cuando no hay nada que seleccionar. Conceptualmente, un recuento (*) sobre una ventana de tiempo podría funcionar, pero todavía no lo hice funcionar. Quizás sea una característica que si no hay nada que contar, la salida será nada (en lugar de 0).

Aparte de las ventanas, no veo nada en Flink SQL que tenga el concepto de tiempo, por lo que fuera de eso sospecho que no será posible.

Qué no estoy buscando:

Comenzando con un mensaje y haciendo más con él. Supongamos que tengo un tema de Kafka y entra un mensaje, entonces probablemente sea trivial seguir repitiendolo y creando infinitos mensajes. Pero mi pregunta es más sobre cómo empezar cuando Kafka está vacío. Código Flink que no es SQL, ni siquiera otras herramientas.

------------------------------------

Incluso mejor que el conector datagen es flink-faker, que se ha utilizado en muchos de los ejemplos del libro de recetas de Flink SQL. Creo que estos ejemplos te resultarán especialmente interesantes.

Flink SQL tiene un potente soporte para trabajar tanto con la hora del evento como con la hora del sistema, incluidas las marcas de agua. Por ejemplo, Flink SQL utiliza marcas de agua para determinar qué registros pueden caducar del estado de Flink al manejar ventanas de tiempo de eventos de transmisión y uniones de intervalo.

Para conocer algunas operaciones adicionales de Flink SQL que aprovechan el tiempo, consulte tablas con versiones de tiempo, detección de patrones, uniones temporales y uniones de búsqueda basadas en el tiempo.



------------------------------------

Puede que el conector “datagen” te resulte útil para esto.

https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/table/connectors/datagen.html

Por ejemplo:

CREATE TABLE Orders (
order_number BIGINT,
price        DECIMAL(32,2),
buyer        ROW<first_name STRING, last_name STRING>,
order_time   TIMESTAMP(3)
) WITH (
  'connector' = 'datagen'
)

1

Lo comprobaré más tarde, ¡pero parece prometedor!

- Dennis Jaheruddin

27/03/2021 a las 9:20

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare