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 Read y Write son extensibles. Si deseas que tu canalización lea o escriba en un formato de almacenamiento de datos que no es compatible con las transformaciones integradas, puedes crear extensiones para proporcionar tus propias Read y Write operaciones.

Cómo leer datos de entrada

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

Java

Nota: Como las transformaciones Read no tienen entrada PCollection, se aplican directamente a Pipeline. Como de costumbre, la llamada a apply muestra un 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 texto, admiten la lectura de varios archivos de entrada que coinciden con un operador glob que proporcionas. Considera el siguiente uso de la transformación Read, que utiliza un operador glob (*) para leer todos los archivos de entrada coincidentes 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 especificada en Cloud Storage con el prefijo "input-" y el sufijo ".csv".

Para leer datos de fuentes diferentes en un único PCollection, lee cada uno de forma independiente y luego usa la transformación Flatten para crear un único PCollection.

Cómo escribir datos de salida

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

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

Java

Cuando apply se transforma a Writeen 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 Text, Write transforma la escritura en varios archivos de salida de forma predeterminada. El servicio de Cloud Dataflow siempre genera archivos de salida fragmentados de forma automática. Cuando transfiere un nombre de archivo de salida a una transformación Write, el nombre de archivo se utiliza como el prefijo para todos los archivos de salida que produce la transformación Write.

Para agregar un sufijo a cada archivo de salida, especifica un sufijo para tu transformación Write.

Considera el siguiente uso de la transformación 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 especificada en Cloud Storage con el prefijo "numbers" 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 Read y Write para varios formatos de datos comunes, entre los que se incluyen:

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.