De tema de Pub/Sub a archivos de texto en Cloud Storage

La plantilla Pub/Sub a texto de Cloud Storage es un flujo de procesamiento en streaming que lee registros de un tema de Pub/Sub y los guarda como una serie de archivos de Cloud Storage en formato de texto. La plantilla se puede utilizar para guardar datos en Pub/Sub de forma rápida para usarlos en el futuro. De forma predeterminada, esta plantilla genera un archivo nuevo cada 5 minutos.

Requisitos del flujo de procesamiento

  • Debes crear un tema de Pub/Sub antes de poner en marcha la ejecución.
  • Los mensajes que se publiquen en el tema deben estar en formato de texto.
  • Los mensajes que se publiquen en el tema no pueden contener ninguna línea nueva. Cada mensaje de Pub/Sub se guarda como una sola línea en el archivo de salida.

Parámetros de plantilla

Parámetros obligatorios

  • outputDirectory prefijo de ruta y de nombre de archivo para escribir archivos de salida. Por ejemplo, gs://bucket-name/path/. Este valor debe terminar con una barra diagonal.
  • outputFilenamePrefix el prefijo que se colocará en cada archivo de ventana. Por ejemplo, output-. El valor predeterminado es "output".

Parámetros opcionales

  • inputTopic el tema de Pub/Sub del que se leerá la entrada. El nombre del tema debe tener el formato projects/<PROJECT_ID>/topics/<TOPIC_NAME>.
  • userTempLocation directorio proporcionado por el usuario en el que se generarán los archivos temporales. Debe terminar con una barra diagonal.
  • outputFilenameSuffix: el sufijo que se añadirá a cada archivo con ventanas. Normalmente, una extensión de archivo, como .txt o .csv. 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 Text Files on Cloud Storage template.
  6. En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
  7. Opcional: Para cambiar del procesamiento una sola vez al modo de streaming al menos una vez, selecciona Al menos una vez.
  8. 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_GCS_Text \
    --region REGION_NAME \
    --staging-location STAGING_LOCATION \
    --parameters \
inputTopic=projects/PROJECT_ID/topics/TOPIC_NAME,\
outputDirectory=gs://BUCKET_NAME/output/,\
outputFilenamePrefix=output-,\
outputFilenameSuffix=.txt

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: nombre del tema de Pub/Sub
  • BUCKET_NAME: el nombre de tu segmento de Cloud Storage

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_GCS_Text
{
   "jobName": "JOB_NAME",
   "environment": {
       "ipConfiguration": "WORKER_IP_UNSPECIFIED",
       "additionalExperiments": []
    },
   "parameters": {
       "inputTopic": "projects/PROJECT_ID/topics/TOPIC_NAME"
       "outputDirectory": "gs://BUCKET_NAME/output/",
       "outputFilenamePrefix": "output-",
       "outputFilenameSuffix": ".txt",
   }
}

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: nombre del tema de Pub/Sub
  • BUCKET_NAME: el nombre de tu segmento de Cloud Storage

Siguientes pasos