Plantilla de conversión de formatos de archivo (Avro, Parquet y CSV)

La plantilla Conversión de formato de archivo es un flujo de procesamiento por lotes que convierte archivos almacenados en Cloud Storage de un formato admitido a otro.

Se admiten las siguientes conversiones de formato:

  • De CSV a Avro
  • De CSV a Parquet
  • De Avro a Parquet
  • De Parquet a Avro

Requisitos del flujo de procesamiento

  • El segmento de Cloud Storage de salida debe existir antes de ejecutar el flujo de procesamiento.

Parámetros de plantilla

Parámetro Descripción
inputFileFormat El formato del archivo de entrada. Debe ser uno de los siguientes: [csv, avro, parquet].
outputFileFormat El formato del archivo de salida. Debe ser uno de los siguientes: [avro, parquet].
inputFileSpec Patrón de ruta de Cloud Storage para los archivos de entrada. Por ejemplo, gs://bucket-name/path/*.csv
outputBucket La carpeta de Cloud Storage en la que se escribirán los archivos de salida. Esta ruta debe terminar con una barra. Por ejemplo, gs://bucket-name/output/
schema Ruta de Cloud Storage al archivo de esquema de Avro. Por ejemplo, gs://bucket-name/schema/my-schema.avsc
containsHeaders (Opcional) Los archivos CSV de entrada contienen un registro de encabezado (true/false). El valor predeterminado es false. Solo es necesario al leer archivos CSV.
csvFormat (Opcional) Especificación del formato CSV que se usará para analizar los registros. El valor predeterminado es Default. Consulta más información sobre el formato CSV de Apache Commons.
delimiter (Opcional) Delimitador de campos que usan los archivos CSV de entrada.
outputFilePrefix (Opcional) El prefijo del archivo de salida. El valor predeterminado es output.
numShards (Opcional) Número de particiones del archivo de salida.

Ejecutar la plantilla

Consola

  1. Ve a la página Crear tarea a partir de plantilla de Dataflow.
  2. Ir a Crear tarea a partir de plantilla
  3. En el campo Nombre de la tarea, introduce un nombre único.
  4. Opcional: En Endpoint regional, seleccione un valor en el menú desplegable. La región predeterminada es us-central1.

    Para ver una lista de las regiones en las que puedes ejecutar una tarea de Dataflow, consulta Ubicaciones de Dataflow.

  5. En el menú desplegable Plantilla de flujo de datos, seleccione the Convert file formats template.
  6. En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
  7. Haz clic en Ejecutar trabajo.

gcloud

En tu shell o terminal, ejecuta la plantilla:

gcloud dataflow flex-template run JOB_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/File_Format_Conversion \
    --parameters \
inputFileFormat=INPUT_FORMAT,\
outputFileFormat=OUTPUT_FORMAT,\
inputFileSpec=INPUT_FILES,\
schema=SCHEMA,\
outputBucket=OUTPUT_FOLDER

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto Google Cloud en el que quieres ejecutar la tarea de Dataflow
  • JOB_NAME: un nombre de trabajo único que elijas
  • REGION_NAME: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo, us-central1
  • VERSION: la versión de la plantilla que quieres usar

    Puedes usar los siguientes valores:

    • latest para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: gs://dataflow-templates-REGION_NAME/latest/
    • el nombre de la versión, como 2023-09-12-00_RC00, para usar una versión específica de la plantilla, que se encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
  • INPUT_FORMAT: el formato de archivo del archivo de entrada. Debe ser uno de los siguientes: [csv, avro, parquet].
  • OUTPUT_FORMAT: el formato de archivo de los archivos de salida. Debe ser uno de los siguientes: [avro, parquet]
  • INPUT_FILES: el patrón de ruta de los archivos de entrada
  • OUTPUT_FOLDER: tu carpeta de Cloud Storage para los archivos de salida
  • SCHEMA: la ruta al archivo de esquema Avro

API

Para ejecutar la plantilla mediante la API REST, envía una solicitud HTTP POST. Para obtener más información sobre la API y sus ámbitos de autorización, consulta projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launch_parameter": {
      "jobName": "JOB_NAME",
      "parameters": {
          "inputFileFormat": "INPUT_FORMAT",
          "outputFileFormat": "OUTPUT_FORMAT",
          "inputFileSpec": "INPUT_FILES",
          "schema": "SCHEMA",
          "outputBucket": "OUTPUT_FOLDER"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/File_Format_Conversion",
   }
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto Google Cloud en el que quieres ejecutar la tarea de Dataflow
  • JOB_NAME: un nombre de trabajo único que elijas
  • LOCATION: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo, us-central1
  • VERSION: la versión de la plantilla que quieres usar

    Puedes usar los siguientes valores:

    • latest para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: gs://dataflow-templates-REGION_NAME/latest/
    • el nombre de la versión, como 2023-09-12-00_RC00, para usar una versión específica de la plantilla, que se encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
  • INPUT_FORMAT: el formato de archivo del archivo de entrada. Debe ser uno de los siguientes: [csv, avro, parquet].
  • OUTPUT_FORMAT: el formato de archivo de los archivos de salida. Debe ser uno de los siguientes: [avro, parquet]
  • INPUT_FILES: el patrón de ruta de los archivos de entrada
  • OUTPUT_FOLDER: tu carpeta de Cloud Storage para los archivos de salida
  • SCHEMA: la ruta al archivo de esquema Avro

Siguientes pasos