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 Read y Write para varios tipos de almacenamiento de datos comunes. Además, las API de Read y Write son extensibles. Si deseas que la canalización lea o escriba en un formato de almacenamiento de datos que no sea compatible con las transformaciones integradas, puedes compilar extensiones para proporcionar tus propias operaciones de Read y de Write.

Lee datos de entrada

Read transforma los datos leídos 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 PCollection nueva, 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 de costumbre, la llamada a apply muestra una PCollection del tipo apropiado, cuyos elementos representan los datos. Consulta Construye tu canalización para obtener más información.

Lee desde varias ubicaciones

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

Java

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

El Read anterior leerá todos los archivos en la ubicación determinada en Cloud Storage con el prefijo “input-” 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 PCollection única.

Escribe datos de salida

Las transformaciones Write escriben los datos en una PCollection a una fuente de datos externa. Con frecuencia, usarás las transformaciones Write al final del programa para generar los resultados finales de la canalización. Sin embargo, puedes usar Write para generar los datos de una PCollection en cualquier punto de tu canalización.

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

Java

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

Escribe en varios archivos de salida

Para los datos de entrada y salida basados en archivos, como Text, las transformaciones Write escriben en varios archivos de salida de forma 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 usa 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 en 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 Write anterior escribirá varios archivos de salida en la ubicación determinada 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 para Java proporciona transformaciones de Read y de Write a varios formatos de datos comunes, entre los que se incluyen 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.