Plantilla de Pub/Sub a archivos Avro en Cloud Storage

La plantilla de Pub/Sub a archivos de Avro en Cloud Storage es un flujo de procesamiento en streaming que lee datos de un tema de Pub/Sub y escribe archivos de Avro en el segmento de Cloud Storage especificado.

Requisitos del flujo de procesamiento

  • El tema de Pub/Sub de entrada debe existir antes de ejecutar el flujo de procesamiento.

Parámetros de plantilla

Parámetros obligatorios

  • inputTopic el tema de Pub/Sub al que suscribirse para consumir mensajes. El nombre del tema debe tener el formato projects/<PROJECT_ID>/topics/<TOPIC_NAME>.
  • outputDirectory directorio de salida en el que se archivan los archivos Avro de salida. Debe contener / al final. Por ejemplo: gs://example-bucket/example-directory/.
  • avroTempDirectory directorio de archivos Avro temporales. Debe contener / al final. Por ejemplo: gs://example-bucket/example-directory/.

Parámetros opcionales

  • outputFilenamePrefix: el prefijo del nombre de archivo de salida de los archivos Avro. El valor predeterminado es "output".
  • outputFilenameSuffix: sufijo del nombre de archivo de salida de los archivos Avro. El valor predeterminado es una cadena vacía.
  • outputShardTemplate la plantilla de fragmento define la parte dinámica de cada archivo con ventana. De forma predeterminada, la canalización usa un solo fragmento para la salida al sistema de archivos de cada ventana. Por lo tanto, todos los datos se exportan a un único archivo por ventana. Los outputShardTemplate valores predeterminados to W-P-SS-of-NN, donde W es el periodo de la ventana, P es la información del panel, S es el número de fragmento y N es el número de fragmentos. En el caso de un solo archivo, la parte SS-of-NN de outputShardTemplate es 00-of-01.
  • yearPattern patrón para dar formato al año. Debe ser uno o varios de los siguientes valores: y o Y. Las mayúsculas y minúsculas no influyen en el año. Opcionalmente, rodee el patrón con caracteres que no sean alfanuméricos o con el carácter de directorio (/). El valor predeterminado es YYYY.
  • monthPattern patrón para dar formato al mes. Debe ser uno o varios caracteres M. Opcionalmente, rodee el patrón con caracteres que no sean alfanuméricos o con el carácter de directorio (/). El valor predeterminado es MM.
  • dayPattern patrón para dar formato al día. Debe ser uno o varios de los siguientes valores: d (día del mes) o D (día del año). Opcionalmente, rodee el patrón con caracteres que no sean alfanuméricos o con el carácter de directorio (/). El valor predeterminado es dd.
  • hourPattern patrón para dar formato a la hora. Debe ser uno o varios caracteres H. Opcionalmente, rodee el patrón con caracteres que no sean alfanuméricos o con el carácter de directorio (/). El valor predeterminado es HH.
  • minutePattern patrón para dar formato al minuto. Debe ser uno o varios caracteres m. Opcionalmente, rodee el patrón con caracteres que no sean alfanuméricos o con el carácter de directorio (/). El valor predeterminado es mm.

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 Pub/Sub to Avro Files on Cloud Storage 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 jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_PubSub_to_Avro \
    --region REGION_NAME \
    --staging-location STAGING_LOCATION \
    --parameters \
inputTopic=projects/PROJECT_ID/topics/TOPIC_NAME,\
outputDirectory=gs://BUCKET_NAME/output/,\
outputFilenamePrefix=FILENAME_PREFIX,\
outputFilenameSuffix=FILENAME_SUFFIX,\
outputShardTemplate=SHARD_TEMPLATE,\
avroTempDirectory=gs://BUCKET_NAME/temp/

Haz los cambios siguientes:

  • 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/
  • STAGING_LOCATION: la ubicación de los archivos locales de almacenamiento provisional (por ejemplo, gs://your-bucket/staging)
  • TOPIC_NAME: el nombre del tema de Pub/Sub
  • BUCKET_NAME: el nombre de tu segmento de Cloud Storage
  • FILENAME_PREFIX: el prefijo del nombre de archivo de salida preferido
  • FILENAME_SUFFIX: el sufijo de nombre de archivo de salida preferido
  • SHARD_TEMPLATE: la plantilla de fragmento de salida preferida

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/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Cloud_PubSub_to_Avro
{
   "jobName": "JOB_NAME",
   "environment": {
       "ipConfiguration": "WORKER_IP_UNSPECIFIED",
       "additionalExperiments": []
    },
   "parameters": {
       "inputTopic": "projects/PROJECT_ID/topics/TOPIC_NAME",
       "outputDirectory": "gs://BUCKET_NAME/output/",
       "avroTempDirectory": "gs://BUCKET_NAME/temp/",
       "outputFilenamePrefix": "FILENAME_PREFIX",
       "outputFilenameSuffix": "FILENAME_SUFFIX",
       "outputShardTemplate": "SHARD_TEMPLATE"
   }
}

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/
  • STAGING_LOCATION: la ubicación de los archivos locales de almacenamiento provisional (por ejemplo, gs://your-bucket/staging)
  • TOPIC_NAME: el nombre del tema de Pub/Sub
  • BUCKET_NAME: el nombre de tu segmento de Cloud Storage
  • FILENAME_PREFIX: el prefijo del nombre de archivo de salida preferido
  • FILENAME_SUFFIX: el sufijo de nombre de archivo de salida preferido
  • SHARD_TEMPLATE: la plantilla de fragmento de salida preferida

Siguientes pasos