Ejemplos de la guía de soluciones

Hay una serie de canalizaciones de ejemplo disponibles en el directorio de Ejemplos de la guía de soluciones (rama master-1.x) en GitHub. En estas canalizaciones, se ilustra cómo usar las clases de SDK para implementar patrones comunes de diseño de procesamiento de datos. En este documento, se describe cada ejemplo de manera breve y se proporciona un vínculo al código fuente.

Consulta Ejemplos de extremo a extremo para obtener una lista completa que ilustra patrones de canalización de extremo a extremo comunes mediante situaciones de ejemplo.

Palabras clave importantes

Los términos siguientes 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. Dataflow toma el código de canalización y lo usa para compilar un trabajo.
  • PCollection: PCollection es una clase especial que proporciona el SDK de Dataflow que representa un conjunto de datos escrito de casi cualquier tamaño.
  • Transformación: en una canalización de Dataflow, una transformación representa un paso o una operación de procesamiento que transforma datos.

BigQueryTornadoes

La canalización de BigQueryTornadoes lee ejemplos públicos de datos meteorológicos desde BigQuery y cuenta la cantidad de tornados que hubo cada mes.

La canalización aplica una transformación definida por el usuario que toma filas de una tabla y genera una tabla de recuentos. La transformación definida por el usuario en este ejemplo consta de varias transformaciones, una de ellas es la transformación de cuenta que define el SDK. Count se usa para contar la cantidad total de tornados que hubo cada mes. Luego, la canalización escribe los resultados finales en BigQuery.

CombinePerKeyExamples

Con frecuencia, te darás cuenta de que debes combinar valores en tus datos de canalización. El SDK de Dataflow proporciona una cantidad de transformaciones Combine que puedes usar para combinar los valores de tus objetos de PCollection de tu canalización. Combine.perKey, por ejemplo, agrupa una recopilación de tuplas por clave y, luego, realiza alguna combinación de todos los valores que comparten esa clave. Puedes combinar los valores si le proporcionas a Combine.perKey una de las funciones de combinación predefinidas o tu propia función de combinación personalizada.

CombinePerKeyExamples lee un conjunto de obras de Shakespeare desde Google BigQuery y, por cada palabra del conjunto de datos que exceda una longitud determinada, genera una string que contiene una lista con los nombres de las obras en los que aparece esa palabra. En particular, muestra cómo combinar los valores de una recopilación agrupada por clave. Usa Combine.perKey para generar una string que contiene la lista con los nombres de las obras en la que aparece cada palabra que cumple con el requisito de longitud. Lo hace mediante una función de combinación (definida por el usuario) que crea una string separada por comas de todos los elementos de entrada. Es decir, para una recopilación de pares clave-valor en la que el valor y la clave son strings, la función concatena todos los valores de la string agrupados con la misma clave en una sola string.

Además de combinar valores en los datos de tu canalización, CombinePerKeyExamples muestra el uso de los agregadores. Los Aggregators se usan con el fin de realizar un seguimiento de cierta información para mostrar en la IU de supervisión de Dataflow. La canalización de CombinePerKeyExamples usa un Aggregator para realizar un seguimiento de la cantidad de palabras que son más breves que la longitud determinada (y por eso, no se incluyen en el resultado final).

MaxPerKeyExamples

En MaxPerKeyExamples, también se muestra cómo usar transformaciones de combinación y CombineFn en particular, y cómo usar las funciones de combinación de estadísticas incluidas en el SDK de Dataflow para Java.

En el ejemplo de MaxPerKeyExamples, se leen ejemplos públicos de los datos meteorológicos desde BigQuery y se usa la función Max para saber la temperatura máxima de cada mes.

DatastoreWordCount

En el ejemplo de DatastoreWordCount, se muestra cómo usar DatastoreIO para leer y escribir desde Cloud Datastore, una base de datos NoSQL sin esquema.

DatastoreWordCount consta de dos ejemplos. El primero, writeDataToDatastore, crea una canalización que lee datos de entrada desde un archivo de texto y propaga DatastoreIO desde él. El segundo, readDataFromDatastore, crea una canalización que realiza un DatastoreIO.Read para leer las obras de Shakespeare, cuenta la cantidad de veces que cada palabra aparece en la obra y escribe los resultados en un archivo de texto.

DeDupExample

DeDupExample muestra cómo quitar los registros duplicados de un conjunto de datos. En el ejemplo, la entrada de la canalización es un conjunto de obras de Shakespeare como archivos de texto sin formato.

En el ejemplo, se muestra cómo usar la transformación de RemoveDuplicates para quitar los registros duplicados (en este caso, las líneas de texto).

FilterExamples

FilterExamples muestra enfoques diferentes para realizar filtraciones. Un enfoque es la proyección en el sentido de la base de datos relacional, que deriva un subconjunto deseado del conjunto de todas las columnas que se encuentran en una tabla. Otra clase de filtración tiene lugar cuando generas una recopilación de elementos en función de si alguna condición es verdadera (un valor definido por estadísticas, un parámetro definido en el momento de creación de la canalización o un valor derivado por la canalización).

La canalización de FilterExamples lee ejemplos públicos de datos meteorológicos desde BigQuery. Realiza una proyección en los datos, encuentra la media global de las lecturas de temperatura, filtra las lecturas de un mes determinado y, luego, envía solo datos (para ese mes) que tienen una temperatura media menor que la media global derivada.

Por lo general, es útil que una condición de filtro se base en un valor derivado por la canalización. El valor derivado se puede usar como una entrada complementaria. FilterExamples muestra cómo filtrar en una entrada complementaria; contiene una transformación compuesta que lee datos meteorológicos, extrae solo el valor de la temperatura de cada elemento y, luego, usa esa recopilación como la entrada a una derivación de la media global. El resultado de esa derivación se usa para filtrar en una recopilación, por lo que envía solo elementos con una temperatura por debajo de esa media global.

JoinExamples

JoinExamples muestra cómo realizar uniones relacionales entre conjuntos de datos con la transformación de CoGroupByKey de Dataflow. CoGroupByKey puede unir valores de varias PCollections que comparten una clave común.

JoinExamples usa datos de muestra de dos tablas de BigQuery, una que contiene eventos actuales indexados por códigos de países y otra con códigos de países asignados a los nombres de los países. En el ejemplo, se muestra cómo unir los datos de las dos tablas con una clave de country code.

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

Enviar comentarios sobre...

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