E/S de canalización

Cuando creas una canalización, con frecuencia necesitarás leer datos de alguna fuente externa, como un archivo en Google Cloud Storage o una tabla de BigQuery. Del mismo modo, querrás que la canalización exporte sus datos de resultado en un receptor de datos externo similar, como los archivos de salida en Cloud Storage o BigQuery. Los SDK de Dataflow proporcionan transformaciones que pueden leer datos desde una fuente externa o escribir datos en un receptor externo.

Los SDK de Dataflow proporcionan transformaciones de Read y Write para varios tipos de almacenamiento de datos comunes. Además, las API de Read y Write son extensibles; si quieres que la canalización lea o escriba en un formato de almacenamiento de datos que no sea compatible con las transformaciones incorporadas, puedes compilar extensiones para brindar tus propias operaciones de Read y Write.

Cómo leer datos de entrada

Read transforma los datos de lectura de una fuente externa y muestra una representación de PCollection de los datos para que los use la canalización. Puedes usar una transformación de Read en cualquier momento mientras construyes la canalización para crear una nueva PCollection, aunque será más común al inicio del programa.

Java

Nota: Dado que las transformaciones de Read no tienen PCollection de entrada, se aplican directamente a la Pipeline. Como siempre, la llamada a apply muestra una PCollection del tipo apropiado, cuyos elementos representan los datos. Consulta Cómo construir la canalización para obtener más información.

Cómo leer desde varias ubicaciones

Muchas transformaciones de Read, como un texto, admiten la lectura de varios archivos de entrada que coinciden con el operador glob que brindas. Considera el siguiente uso de la transformación de Read, que utiliza un operador glob (*) para leer todos los archivos de entrada coincidentes en la ubicación dada en Google Cloud Storage:

Java

  p.apply(TextIO.Read.named("ReadFromText")
		     .from("gs://my_bucket/path/to/input-*.csv");

La Read anterior leerá todos los archivos en la ubicación dada en Cloud Storage con el prefijo “entrada-” y el sufijo “.csv”.

Para leer datos de fuentes diversas en una sola PCollection, lee cada una de forma independiente y, luego, usa la transformación flatten para crear una única PCollection.

Cómo escribir datos de salida

Las transformaciones de Write escriben los datos de una PCollection en una fuente de datos externa. En general, usarás transformaciones de Write al final del programa para exportar los resultados finales de la canalización. Sin embargo, puedes usar Write para exportar los datos de una PCollection en cualquier punto de la canalización.

Para utilizar una transformación de Write, llama al método apply en la PCollection que deseas escribir y pasa la transformación de Write apropiada como argumento.

Java

Cuando aplicas (apply) una transformación de Write a una PCollection, el valor de retorno es un objeto de tipo PDone. El objeto PDone es un objeto de resultado trivial y se puede ignorar de forma segura.

Cómo escribir en varios archivos de salida

Para los datos de entrada y salida basados en archivos, como texto, las transformaciones de Write escriben varios archivos de salida de manera predeterminada. El servicio de Cloud Dataflow siempre genera archivos de salida fragmentados de forma automática. Cuando pasas un nombre de archivo de salida a una transformación de Write, el nombre de archivo se utiliza como el prefijo para todos los archivos de salida que produce la transformación de Write.

Puedes agregar un sufijo a cada archivo de salida mediante la especificación de un sufijo para tu transformación de Write.

Considera el siguiente uso de la transformación de Write, que escribe varios archivos de salida en una ubicación en Cloud Storage. Cada archivo tiene el prefijo “números”, una etiqueta numérica y el sufijo “.csv”.

Java

  records.apply(TextIO.Write.named("WriteToText")
			    .to("gs://my_bucket/path/to/numbers")
			    .withSuffix(".csv"));

El comando Write anterior escribirá varios archivos de salida en la ubicación dada en Cloud Storage con el prefijo “números” y el sufijo “.csv”.

API de E/S incluidas en los SDK de Dataflow

Algunas API de fuente y receptor se incluyen en los SDK de Dataflow.

Java

El SDK de Dataflow de Java brinda transformaciones de Read y Write para varios formatos de datos comunes incluidos los siguientes:

API de E/S adicionales

Además de las API de E/S, los SDK de Dataflow proporcionan una API extensible que puedes utilizar para crear tus propias fuentes de datos y receptores personalizados.

Java

Puedes crear tus propias fuentes de entrada y receptores de salida personalizados con las API de fuente y receptor de Dataflow.

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

Enviar comentarios sobre...

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