La plantilla Tema o suscripción de Pub/Sub a texto de Cloud Storage es un flujo de procesamiento en streaming que lee registros 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
- El tema o la suscripción de Pub/Sub deben existir antes de 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 la ruta y el prefijo de nombre de archivo para escribir los archivos de salida. Este valor debe terminar con una barra diagonal. Por ejemplo,
gs://your-bucket/your-path/
.
Parámetros opcionales
- inputTopic el tema de Pub/Sub del que se leerá la entrada. Si se proporciona este parámetro, no utilice
inputSubscription
. Por ejemplo,projects/<PROJECT_ID>/topics/<TOPIC_NAME>
. - inputSubscription la suscripción de Pub/Sub de la que se leerán los datos de entrada. Si se proporciona este parámetro, no utilice
inputTopic
. Por ejemplo,projects/<PROJECT_ID>/subscription/<SUBSCRIPTION_NAME>
. - userTempLocation directorio proporcionado por el usuario en el que se generarán los archivos temporales. 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". - outputFilenameSuffix el sufijo que se debe colocar en cada archivo de ventana. Normalmente, se trata de una extensión de archivo, como
.txt
o.csv
. Por ejemplo,.txt
. 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. Esto significa que todos los datos se exportan a un único archivo por ventana. El valor predeterminado de
outputShardTemplate
esW-P-SS-of-NN
, dondeW
es el periodo de la ventana,P
es la información del panel,S
es el número de partición yN
es el número de particiones. En el caso de un solo archivo, la parteSS-of-NN
deoutputShardTemplate
es00-of-01
. - numShards: número máximo de fragmentos de salida que se producen al escribir. Un mayor número de particiones implica un mayor rendimiento para escribir en Cloud Storage, pero puede suponer un mayor coste de agregación de datos en las particiones al procesar los archivos de Cloud Storage de salida. El valor predeterminado es 0.
- windowDuration es el intervalo en el que se escriben los datos en el directorio de salida. Configura la duración en función del rendimiento de la canalización. Por ejemplo, un mayor rendimiento puede requerir tamaños de ventana más pequeños para que los datos quepan en la memoria. El valor predeterminado es
5m
(5 minutos), con un mínimo de1s
(1 segundo). Los formatos permitidos son:[int]s
(segundos; por ejemplo,5s
),[int]m
(minutos; por ejemplo,12m
) y[int]h
(horas; por ejemplo,2h
). Por ejemplo,5m
. - yearPattern patrón para dar formato al año. Debe ser uno o varios de los siguientes valores:
y
oY
. Las mayúsculas y minúsculas no influyen en el año. El patrón se puede envolver de forma opcional con caracteres que no sean alfanuméricos ni el carácter de directorio (/
). El valor predeterminado esYYYY
. - monthPattern patrón para dar formato al mes. Debe ser uno o varios caracteres
M
. El patrón se puede envolver de forma opcional con caracteres que no sean alfanuméricos o con el carácter de directorio (/
). El valor predeterminado esMM
. - dayPattern patrón para dar formato al día. Debe ser uno o varios de los siguientes valores:
d
(día del mes) oD
(día del año). Las mayúsculas y minúsculas no influyen en el año. El patrón se puede envolver de forma opcional con caracteres que no sean alfanuméricos ni el carácter de directorio (/
). El valor predeterminado esdd
. - hourPattern patrón para dar formato a la hora. Debe ser uno o varios caracteres
H
. El patrón se puede envolver de forma opcional con caracteres que no sean alfanuméricos o con el carácter de directorio (/
). El valor predeterminado esHH
. - minutePattern patrón para dar formato al minuto. Debe ser uno o varios caracteres
m
. El patrón se puede envolver de forma opcional con caracteres que no sean alfanuméricos o con el carácter de directorio (/
). El valor predeterminado esmm
.
Ejecutar la plantilla
Consola
- Ve a la página Crear tarea a partir de plantilla de Dataflow. Ir a Crear tarea a partir de plantilla
- En el campo Nombre de la tarea, introduce un nombre único.
- 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.
- En el menú desplegable Plantilla de flujo de datos, seleccione the Pub/Sub Topic or Subscription to Text Files on Cloud Storage template.
- En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
- Haz clic en Ejecutar trabajo.
gcloud
En tu shell o terminal, ejecuta la plantilla:
gcloud dataflow flex-template run JOB_NAME \ --project=YOUR_PROJECT_ID \ --region REGION_NAME \ --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_PubSub_to_GCS_Text_Flex \ --parameters \ inputSubscription=projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME,\ outputDirectory=gs://BUCKET_NAME/output/,\ outputFilenamePrefix=output-,\ outputFilenameSuffix=.txt
Haz los cambios siguientes:
JOB_NAME
: un nombre de trabajo único que elijasREGION_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 usarPuedes 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/
SUBSCRIPTION_NAME
: nombre de tu suscripción de Pub/SubBUCKET_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/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "inputSubscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME" "outputDirectory": "gs://BUCKET_NAME/output/", "outputFilenamePrefix": "output-", "outputFilenameSuffix": ".txt", }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Cloud_PubSub_to_GCS_Text_Flex", } }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto Google Cloud en el que quieres ejecutar la tarea de DataflowJOB_NAME
: un nombre de trabajo único que elijasLOCATION
: 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 usarPuedes 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/
SUBSCRIPTION_NAME
: nombre de tu suscripción de Pub/SubBUCKET_NAME
: el nombre de tu segmento de Cloud Storage
Siguientes pasos
- Consulta información sobre las plantillas de Dataflow.
- Consulta la lista de plantillas proporcionadas por Google.