Red de conocimiento de divisas - Consulta hotelera - Tecla FlinkPor operador

Tecla FlinkPor operador

[Tabla de contenido]

Las transformaciones de Flink incluyen principalmente cuatro tipos: transformación básica de flujo de datos único, transformación de agrupación basada en claves, transformación de flujo de datos múltiples y transformación de redistribución de datos. Este artículo presenta principalmente la conversión de paquetes basada en claves.

Los datos grupales se utilizan principalmente para operaciones de agregación posteriores, es decir, el análisis de agregación del mismo conjunto de datos. KeyBy convierte el flujo de datos en un KeyedStream y la operación de agregación convierte KeyedStream en un flujo de datos. Si el tipo de datos de cada elemento antes de la agregación es t, entonces el tipo de datos después de la agregación sigue siendo t.

Proporción básica

En la mayoría de los casos, necesitamos agrupar los datos de acuerdo con un determinado atributo del evento o un determinado campo de los datos, y procesar los datos en grupos. Como se muestra en la figura siguiente, el operador keyBy agrupa los datos según la forma de los elementos. Los elementos con la misma forma se agrupan y pueden ser procesados ​​de manera uniforme por operadores posteriores. Por ejemplo, al procesar flujos de datos de varias acciones, puede agruparlos según los símbolos de las acciones y luego contar los cambios de precio de los datos con el mismo símbolo de las acciones. Por poner otro ejemplo, el registro de comportamiento del usuario de comercio electrónico registra todos los comportamientos del usuario. Si desea analizar el comportamiento de un usuario, primero debe agruparlo por ID de usuario.

El operador KeyBy convierte un flujo de datos en un KeyedStream. KeyedStream es un flujo de datos especial. De hecho, KeyedStream hereda DataStream y los elementos de DataStream se distribuyen aleatoriamente en varios espacios de tareas. Los elementos de KeyedStream se agrupan por clave y se asignan a cada espacio de tarea. Necesitamos pasar un parámetro al operador KeyBy para indicarle a Flink qué campo usar como clave de agrupación.

Podemos usar la posición numérica para especificar la clave:

También puedes usar el nombre del campo para especificar la clave, como el símbolo bursátil en StockPrice:

Una vez agrupados por claves, podemos manejar ventanas de tiempo y crear y actualizar estados basados ​​en claves. Los datos con la misma clave en el flujo de datos pueden acceder y modificar el mismo estado.

Las operaciones de agregación comunes incluyen suma, máximo, mínimo, etc. Estas operaciones de agregación se denominan colectivamente agregaciones. La agregación requiere un parámetro para especificar el campo en el que agregar. De manera similar a keyBy, podemos usar posiciones numéricas para especificar los campos a agregar, o podemos usar nombres de campos.

A diferencia del procesamiento por lotes, estas funciones de agregación se utilizan para recopilar datos de la transmisión de datos que ingresa a Flink en secuencia. La operación de agregación es una agregación estadística de datos entrantes previamente. La función del operador de suma es sumar el campo y guardar el resultado en el campo. La operación mínima no puede determinar los valores de otros campos.

El operador max maximiza el campo y almacena el resultado en el campo. Para otros campos, esta operación no garantiza sus valores.

El operador MaxBy obtiene el valor máximo del campo. La diferencia entre maxBy y max es que maxBy retiene los valores de otros campos al mismo tiempo, es decir, maxBy puede obtener el elemento más grande en el flujo de datos.

Del mismo modo, la diferencia entre min y minBy es que el operador min encuentra el valor mínimo de un campo y minBy devuelve el elemento con el valor mínimo.

De hecho, estas operaciones de agregación ya encapsulan datos de estado. Por ejemplo, el operador de suma registra la suma actual y el operador máximo registra el valor máximo actual. Debido a que los datos de estado se encapsulan internamente y no se borran, es necesario evitar el uso de agregaciones en flujos de datos infinitos.

上篇: El 22 de noviembre, se informó que se encontraron 2 casos positivos de nueva infección por coronavirus en el distrito de Beihu de Chenzhou. 下篇: ¿Cuál es la política de compra de viviendas de Xi en 2018?
Artículos populares