Ejecutar plantillas

Después de crear y habilitar a etapa la plantilla de Cloud Dataflow, ejecuta la plantilla a través de Google Cloud Platform Console, API de REST o de la herramienta de línea de comandos de gcloud. Puedes implementar tus trabajos de plantilla de Cloud Dataflow desde varios entornos, incluidos el entorno estándar de App Engine y otros entornos restringidos.

Nota: Además de depender del archivo de la plantilla, la ejecución de la canalización basada en la plantilla depende de los archivos que pasaron por la etapa de pruebas y a los que se hizo referencia durante la creación de la plantilla. Si mueves o quitas los archivos de la etapa de pruebas, la ejecución de tu canalización fallará.

Cómo utilizar GCP Console

Puedes utilizar GCP Console para ejecutar plantillas que provee Google y plantillas personalizadas de Cloud Dataflow.

Plantillas que proporciona Google

Realiza los siguientes pasos para ejecutar una plantilla de Google:

  1. Ve a la página de Cloud Dataflow en GCP Console.
  2. Ir a la página de Cloud Dataflow
  3. Haz clic en CREATE JOB FROM TEMPLATE (CREAR UN TRABAJO A PARTIR DE UNA PLANTILLA).
  4. Botón Crear un trabajo a partir de una plantilla de Cloud Platform Console
  5. Selecciona la plantilla de Google que quieras ejecutar desde el menú desplegable de Cloud Dataflow template (Plantilla de Cloud Dataflow).
  6. Formulario de ejecución de una plantilla WordCount
  7. Ingresa un nombre para el trabajo en el campo Job Name (Nombre del trabajo). El nombre de tu trabajo debe coincidir con la expresión regular [a-z]([-a-z0-9]{0,38}[a-z0-9])? para que sea válido.
  8. Ingresa los valores de tus parámetros en los campos de parámetros provistos. No necesitarás la sección Additional Parameters (Parámetros adicionales) cuando utilices una plantilla de Google.
  9. Haz clic en Run Job (Ejecutar trabajo).

Plantillas personalizadas

Realiza los siguientes pasos para ejecutar una plantilla personalizada:

  1. Ve a la página de Cloud Dataflow en GCP Console.
  2. Ir a la página de Cloud Dataflow
  3. Haz clic en CREATE JOB FROM TEMPLATE (CREAR UN TRABAJO A PARTIR DE UNA PLANTILLA).
  4. Botón Crear un trabajo a partir de una plantilla de Cloud Platform Console
  5. Selecciona Custom Template (Plantilla personalizada) en el menú desplegable de Cloud Dataflow template (Plantilla de Cloud Dataflow).
  6. Formulario de ejecución de una plantilla personalizada
  7. Ingresa un nombre para el trabajo en el campo Job Name (Nombre del trabajo). El nombre de tu trabajo debe coincidir con la expresión regular [a-z]([-a-z0-9]{0,38}[a-z0-9])? para que sea válido.
  8. Ingresa la ruta de tu archivo de plantilla de Cloud Storage en el campo de la ruta de la plantilla de Cloud Storage.
  9. Si tu plantilla requiere de parámetros, haz clic en Add item (Agregar elemento) en la sección Additional Parameters (Parámetros adicionales). Ingresa el Nombre y el Valor del parámetro. Repite este paso para cada parámetro que necesites.
  10. Haz clic en Run Job (Ejecutar trabajo).

Uso de la API de REST

Para ejecutar una plantilla con una solicitud de la API de REST, envía una solicitud HTTP POST con tu ID del proyecto. Esta solicitud requiere de una autorización.

Consulta la referencia de la API de REST de projects.templates.launch para obtener más información sobre los parámetros disponibles.

Ejemplo 1: Plantilla personalizada, trabajo en lotes

Esta solicitud projects.templates.launch de ejemplo crea un trabajo en lotes a partir de una plantilla que lee un archivo de texto y escribe un archivo de texto de salida. Si la solicitud se ejecuta correctamente, el cuerpo de la respuesta contendrá una instancia de LaunchTemplateResponse.

Debes modificar los siguientes valores:

  • Reemplaza [YOUR_PROJECT_ID] por el ID del proyecto.
  • Reemplaza [JOB_NAME] con un nombre a elección para el trabajo. El nombre de tu trabajo debe coincidir con la expresión regular [a-z]([-a-z0-9]{0,38}[a-z0-9])? para que sea válido.
  • Reemplaza [YOUR_BUCKET_NAME] por el nombre de tu depósito de Cloud Storage.
  • Configura gcsPath con la ubicación del archivo de la plantilla en Cloud Storage.
  • Configura los parámetros parameters en tu lista de pares clave-valor.
  • Configura tempLocation en una ubicación para la que tengas permiso de escritura. Este valor es obligatorio para ejecutar plantillas de Google.
    POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://[YOUR_BUCKET_NAME]/templates/TemplateName
    {
        "jobName": "[JOB_NAME]",
        "parameters": {
            "inputFile" : "gs://[YOUR_BUCKET_NAME]/input/my_input.txt",
            "outputFile": "gs://[YOUR_BUCKET_NAME]/output/my_output"
        },
        "environment": {
            "tempLocation": "gs://[YOUR_BUCKET_NAME]/temp",
            "zone": "us-central1-f"
        }
    }

Ejemplo 2: Plantilla personalizada, trabajo de transmisión

Esta solicitud projects.templates.launch crea un trabajo de transmisión a partir de una plantilla que lee desde un tema de Cloud Pub/Sub y escribe en una tabla de BigQuery. La tabla de BigQuery debe existir con anterioridad, con el esquema adecuado. Si se ejecuta correctamente, el cuerpo de la respuesta contendrá una instancia de LaunchTemplateResponse.

Debes modificar los siguientes valores:

  • Reemplaza [YOUR_PROJECT_ID] por el ID del proyecto.
  • Reemplaza [JOB_NAME] con un nombre a elección para el trabajo. El nombre de tu trabajo debe coincidir con la expresión regular [a-z]([-a-z0-9]{0,38}[a-z0-9])? para que sea válido.
  • Reemplaza [YOUR_BUCKET_NAME] por el nombre del depósito de Cloud Storage.
  • Reemplaza [YOUR_TOPIC_NAME] con el nombre de tu tema de Cloud Pub/Sub.
  • Reemplaza [YOUR_DATASET] con tu conjunto de datos de BigQuery, y [YOUR_TABLE_NAME] con el nombre de tu tabla de BigQuery.
  • Configura gcsPath con la ubicación del archivo de la plantilla en Cloud Storage.
  • Configura los parámetros parameters en tu lista de pares clave-valor.
  • Configura tempLocation en una ubicación para la que tengas permiso de escritura. Este valor es obligatorio para ejecutar plantillas de Google.
    POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://[YOUR_BUCKET_NAME]/templates/TemplateName
    {
        "jobName": "[JOB_NAME]",
        "parameters": {
            "topic": "projects/[YOUR_PROJECT_ID]/topics/[YOUR_TOPIC_NAME]",
            "table": "[YOUR_PROJECT_ID]:[YOUR_DATASET].[YOUR_TABLE_NAME]"
        },
        "environment": {
            "tempLocation": "gs://[YOUR_BUCKET_NAME]/temp",
            "zone": "us-central1-f"
        }
    }

Cómo utilizar las bibliotecas cliente de la API de Google

Considera utilizar las bibliotecas cliente de la API de Google para realizar llamadas a la API de REST de Cloud Dataflow con facilidad. En esta secuencia de comandos de ejemplo, se utiliza la biblioteca cliente de la API de Google para Python.

En este ejemplo, debes modificar los siguientes valores:

  • Reemplaza [YOUR_PROJECT_ID] por el ID del proyecto.
  • Reemplaza [JOB_NAME] con un nombre a elección para el trabajo. El nombre de tu trabajo debe coincidir con la expresión regular [a-z]([-a-z0-9]{0,38}[a-z0-9])? para que sea válido.
  • Reemplaza [YOUR_BUCKET_NAME] por el nombre de tu depósito de Cloud Storage.
  • Reemplaza [YOUR_TEMPLATE_NAME] con el nombre de tu plantilla.
  • Configura gcsPath con la ubicación del archivo de la plantilla en Cloud Storage.
  • Configura los parámetros parameters en tu lista de pares clave-valor.
  • Configura tempLocation en una ubicación para la que tengas permiso de escritura. Este valor es obligatorio para ejecutar plantillas de Google.
    from googleapiclient.discovery import build
    from oauth2client.client import GoogleCredentials

    credentials = GoogleCredentials.get_application_default()
    service = build('dataflow', 'v1b3', credentials=credentials)

    # Set the following variables to your values.
    JOBNAME = '[JOB_NAME]'
    PROJECT = '[YOUR_PROJECT_ID]'
    BUCKET = '[YOUR_BUCKET_NAME]'
    TEMPLATE = '[YOUR_TEMPLATE_NAME]'

    GCSPATH="gs://{bucket}/templates/{template}".format(bucket=BUCKET, template=TEMPLATE)
    BODY = {
        "jobName": "{jobname}".format(jobname=JOBNAME),
        "parameters": {
            "inputFile" : "gs://{bucket}/input/my_input.txt",
            "outputFile": "gs://{bucket}/output/my_output".format(bucket=BUCKET)
         },
         "environment": {
            "tempLocation": "gs://{bucket}/temp".format(bucket=BUCKET),
            "zone": "us-central1-f"
         }
    }

    request = service.projects().templates().launch(projectId=PROJECT, gcsPath=GCSPATH, body=BODY)
    response = request.execute()

    print(response)

Cómo utilizar gcloud

Nota: Para ejecutar las plantillas a través de la herramienta de línea de comandos de gcloud, debes tener la versión 138.0.0 del SDK de Cloud o superior.

La herramienta de línea de comandos de gcloud puede ejecutar una plantilla personalizada o una de Google a través del comando gcloud dataflow jobs run. Algunos ejemplos sobre la ejecución de las plantillas de Google se encuentran en la página de plantillas de Google.

En los siguientes ejemplos de plantillas personalizadas, configura estos valores:

  • Reemplaza [JOB_NAME] con un nombre a elección para el trabajo. El nombre de tu trabajo debe coincidir con la expresión regular [a-z]([-a-z0-9]{0,38}[a-z0-9])? para que sea válido.
  • Reemplaza [YOUR_BUCKET_NAME] por el nombre del depósito de Cloud Storage.
  • Debes incluir el marcador --gcs-location. Configura --gcs-location con la ubicación del archivo de la plantilla en Cloud Storage.
  • Configura --parameters con la lista de parámetros separados por coma para pasar el trabajo. No se admiten espacios o valores entre las comas.

Ejemplo 1: Plantilla personalizada, trabajo en lotes

En este ejemplo, se crea un trabajo en lotes a partir de una plantilla que lee un archivo de texto y escribe un archivo de texto de salida.

    gcloud dataflow jobs run [JOB_NAME] \
        --gcs-location gs://[YOUR_BUCKET_NAME]/templates/MyTemplate \
        --parameters inputFile=gs://[YOUR_BUCKET_NAME]/input/my_input.txt,outputFile=gs://[YOUR_BUCKET_NAME]/output/my_output

La solicitud muestra una respuesta con el siguiente formato.

    id: 2016-10-11_17_10_59-1234530157620696789
    projectId: [YOUR_PROJECT_ID]
    type: JOB_TYPE_BATCH

Ejemplo 2: Plantilla personalizada, trabajo de transmisión

En este ejemplo, se crea un trabajo de transmisión que lee a partir de un tema de Cloud Pub/Sub y escribe en una tabla de BigQuery. La tabla de BigQuery debe existir con anterioridad, con el esquema adecuado.

    gcloud dataflow jobs run [JOB_NAME] \
        --gcs-location gs://[YOUR_BUCKET_NAME]/templates/MyTemplate \
        --parameters topic=projects/project-identifier/topics/resource-name,table=my_project:my_dataset.my_table_name

La solicitud muestra una respuesta con el siguiente formato.

    id: 2016-10-11_17_10_59-1234530157620696789
    projectId: [YOUR_PROJECT_ID]
    type: JOB_TYPE_STREAMING

Para obtener una lista completa de los marcadores del comando gcloud dataflow jobs run, consulta la referencia de la herramienta de gcloud.

Supervisión y solución de problemas

La interfaz de Dataflow Monitoring te permite supervisar tus trabajos de Cloud Dataflow. Si un trabajo presenta errores, puedes encontrar sugerencias para solucionar el problema, estrategias de depuración y un catálogo de errores comunes en la guía Cómo solucionar errores en tu canalización.

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

Enviar comentarios sobre...

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