Ejemplos completos

Hay una serie de canalizaciones de ejemplo disponibles en el directorio ejemplos completos (rama master-1.x) en GitHub. Estas canalizaciones muestran patrones comunes de canalización de extremo a extremo con situaciones de ejemplo. Cada situación de ejemplo está inspirada en un dominio de procesamiento de datos realista, como el análisis de datos de patrones de tráfico, los hashtags de Twitter y los datos de edición de Wikipedia. En este documento, se describe brevemente cada ejemplo y se proporciona un vínculo al código fuente.

Un buen punto de partida para los usuarios nuevos es la explicación de ejemplo de WordCount, que se ejecuta sobre los archivos de texto de entrada proporcionados y calcula cuántas veces aparece cada palabra en la entrada. WordCount enseña conceptos clave de flujo de datos a través de un ejemplo muy simple. Sin embargo, las siguientes canalizaciones son más realistas.

Palabras clave importantes

Los siguientes términos aparecerán en todo este documento:

  • Canalización: Una canalización es el código que escribes para representar el trabajo de procesamiento de datos. El flujo de datos toma el código de canalización y lo usa para compilar un trabajo.
  • PCollection: PCollection es una clase especial proporcionada por el SDK de Dataflow que representa un conjunto de datos ingresados.
  • Transformación: En una canalización de Dataflow, una transformación representa un paso o una operación de procesamiento que transforma datos.
  • PCollections no delimitadas y delimitadas: El tamaño de una PCollection puede ser delimitado o no delimitado. Tu PCollection está delimitada si representa un conjunto de datos fijo, o no delimitada si representa un conjunto de datos que se actualiza continuamente.
  • Modo por lotes: Si una canalización “se ejecuta en modo por lotes”, entonces, su entrada está delimitada.
  • Modo de transmisión: Si una canalización “se ejecuta en modo de transmisión”, entonces, su entrada es no delimitada.
  • Sistema de ventanas: Sistema de ventanas es un concepto usado en el SDK de Dataflow para subdividir una PCollection según las marcas de tiempo de sus elementos individuales.

Autocompletar

Java

La canalización de Autocomplete calcula las etiquetas hash más populares para cada prefijo de una palabra en la entrada. Puedes utilizar los resultados de la canalización de AutoComplete para completar automáticamente. AutoComplete recibe palabras como entrada y calcula las sugerencias más populares para cada prefijo de cada palabra en la entrada.

AutoComplete se puede ejecutar sobre datos delimitados (en modo por lotes) o datos no delimitados (en modo de transmisión). Cuando se usan datos delimitados, la entrada es una lista de palabras en un archivo de texto. En el modo de transmisión, las palabras fluyen constantemente desde un tema de Google Cloud Pub/Sub.

La canalización de AutoComplete aplica una serie de transformaciones a las strings de entrada para extraer las palabras con hashtags en frente de ellas, determina los prefijos de esas palabras y calcula las sugerencias principales para cada prefijo. La salida de la canalización son los datos de las principales sugerencias.

Extracción de palabras de transmisión

Java

La canalización de StreamingWordExtract es una canalización pequeña de ejemplo que muestra cómo trabajar con datos de transmisión. La canalización lee líneas de texto que se transmiten desde Cloud Pub/Sub, convierte en token cada línea en palabras individuales y luego las aprovecha. Luego, la canalización formatea las palabras aprovechadas como filas de la tabla de BigQuery y realiza una escritura de transmisión en una tabla de BigQuery.

TfIdf

Java

TfIdf, que significa frecuencia de término - frecuencia de documento inversa, es un cálculo de la importancia de una palabra para un documento o conjunto de documentos.

La canalización de Tf-idf lee un conjunto de documentos desde un directorio o desde Google Cloud Storage y aplica una serie de transformaciones que calculan los componentes del rango tf-idf de cada palabra. Uno de los componentes del cálculo tf-idf es la parte idf (frecuencia de documentos inversa), que es solo el número de documentos en los que aparece la palabra, dividido por el número total de documentos. El número total de documentos se inyecta en la canalización como una entrada lateral, ya que este es un valor que no cambia. Una entrada lateral es una entrada adicional a la que puede acceder la canalización cada vez que procesa un elemento en la PCollection de entrada.

Tf-idf exporta una asignación de cada palabra a su rango en el documento en el que aparece.

Sesiones principales de Wikipedia

Java

TopWikipediaSessions es una canalización por lotes que procesa los datos de edición de Wikipedia que lee desde Google Cloud Storage. Encuentra al usuario con la secuencia más grande de ediciones de Wikipedia en una sola sesión. Una sesión se define como una string de ediciones, donde cada una está separada de la siguiente por menos de una hora.

Por ejemplo, supongamos que el usuario A edita Wikipedia 5 veces y cada edición tiene 30 minutos de diferencia. Un día después, el usuario A edita Wikipedia una vez más. Su sesión más larga consta de 5 ediciones (no 6). El usuario B edita Wikipedia 20 veces, pero lo hace cada 2 horas; su sesión más larga consta de 1 edición. Por lo tanto, el usuario A es el que tiene la mayor secuencia de ediciones en una sesión.

Este ejemplo utiliza el Sistema de ventanas para realizar agregaciones de datos basadas en el tiempo. Utiliza duraciones de ventana de 1 hora para definir sesiones y calcula la cantidad de ediciones en cada sesión de usuario.

La canalización escribe su salida como strings formateadas en un archivo de texto en Google Cloud Storage.

Flujo de carril máximo de tráfico

Java

La canalización de TrafficMaxLaneFlow analiza los datos de los sensores de tráfico. Esta canalización se puede ejecutar en modo por lotes y de transmisión. En el modo por lotes, la canalización lee los datos del sensor de tráfico de un archivo de entrada. En el modo de transmisión, los datos fluyen constantemente desde un tema de Cloud Pub/Sub.

TrafficMaxLaneFlow analiza la transmisión de datos con contenido nuevo con Sistema de ventanas, específicamente Ventanas de tiempo variable. Las ventanas de tiempo variable usan intervalos de tiempo en la transmisión de datos para definir conjuntos de datos con ventanas que se superponen.

TrafficMaxLaneFlow utiliza una transformación de Combine personalizada para extraer la información de carril y calcular el flujo de carril máximo encontrado en una estación determinada para cada ventana. Una transformación de combinación personalizada es necesaria porque la combinación no es una combinación simple máxima; necesita retener información adicional junto con el valor del flujo.

La canalización formatea y escribe los valores máximos junto con la información auxiliar en una tabla de BigQuery.

Rutas de tráfico

Java

TrafficRoutes analiza los datos de los sensores de tráfico, calcula la velocidad promedio para un conjunto pequeño de “rutas predefinidas” y busca “demoras” en esas rutas.

La canalización de TrafficRoutes se ejecuta sobre datos delimitados (en modo por lotes) o datos no delimitados (en modo de transmisión). En modo por lotes, la canalización lee los datos del sensor de tráfico desde un archivo de texto. En el modo de transmisión, la canalización lee los datos de un tema de Cloud Pub/Sub.

La canalización analiza el flujo de datos mediante el Sistema de ventanas, específicamente Ventanas de tiempo variable. Las ventanas de tiempo variable usan intervalos de tiempo en la transmisión de datos para definir conjuntos de datos con ventanas que se superponen. La duración predeterminada de la ventana en TrafficRoutes es de 3 minutos y el intervalo de la ventana predeterminado es de 1 minuto. Por lo tanto, cada ventana contiene un muestreo de datos de 3 minutos que comienza 1 minuto después del inicio de la ventana anterior. Para cada ventana, la canalización calcula la velocidad promedio del conjunto de “rutas” predefinidas y busca “demoras”. Se produce una “demora” si una mayoría de velocidades en una ventana variable es menor que la lectura de la ventana anterior.

Luego, la canalización formatea los resultados y los escribe en BigQuery.

PI de estimación

Java

Este ejemplo de canalización no está disponible en el SDK de Dataflow para Java.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.