Plantilla de texto de Firestore a Cloud Storage

La plantilla de Firestore a texto de Cloud Storage es un flujo de procesamiento por lotes que lee entidades de Firestore y las escribe en Cloud Storage como archivos de texto. Puedes utilizar una función para procesar cada entidad como una cadena JSON. Si no lo haces, todas las líneas del archivo de salida aparecerán como entidades con serialización JSON.

Requisitos del flujo de procesamiento

Debes configurar Firestore en el proyecto antes de ejecutar la canalización.

Parámetros de plantilla

Parámetros obligatorios

  • firestoreReadGqlQuery una consulta de GQL (https://cloud.google.com/datastore/docs/reference/gql_reference) que especifica qué entidades se deben obtener. Por ejemplo, SELECT * FROM MyKind.
  • firestoreReadProjectId el ID del proyecto de Google Cloud que contiene la instancia de Firestore de la que quieres leer datos.
  • textWritePrefix prefijo de la ruta de Cloud Storage que especifica dónde se escriben los datos. Por ejemplo, gs://mybucket/somefolder/.

Parámetros opcionales

  • firestoreReadNamespace el espacio de nombres de las entidades solicitadas. Para usar el espacio de nombres predeterminado, deje este parámetro en blanco.
  • javascriptTextTransformGcsPath el URI de Cloud Storage del archivo .js que define la función de JavaScript definida por el usuario (UDF) que se va a usar. Por ejemplo, gs://my-bucket/my-udfs/my_file.js.
  • javascriptTextTransformFunctionName nombre de la función definida por el usuario (UDF) de JavaScript que se va a usar. Por ejemplo, si el código de la función de JavaScript es myTransform(inJson) { /*...do stuff...*/ }, el nombre de la función es myTransform. Para ver ejemplos de UDFs de JavaScript, consulta Ejemplos de UDFs (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples).

Función definida por el usuario

También puedes ampliar esta plantilla escribiendo una función definida por el usuario (UDF). La plantilla llama a la función definida por el usuario para cada elemento de entrada. Las cargas útiles de los elementos se serializan como cadenas JSON. Para obtener más información, consulta el artículo sobre cómo crear funciones definidas por el usuario para plantillas de Dataflow.

Especificación de la función

La función definida por el usuario tiene las siguientes especificaciones:

  • Entrada: una entidad de Firestore, serializada como una cadena JSON.
  • Salida: el valor de cadena que se va a escribir en Cloud Storage.

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 Firestore to Text 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/Firestore_to_GCS_Text \
    --region REGION_NAME \
    --parameters \
firestoreReadGqlQuery="SELECT * FROM FIRESTORE_KIND",\
firestoreReadProjectId=FIRESTORE_PROJECT_ID,\
firestoreReadNamespace=FIRESTORE_NAMESPACE,\
javascriptTextTransformGcsPath=PATH_TO_JAVASCRIPT_UDF_FILE,\
javascriptTextTransformFunctionName=JAVASCRIPT_FUNCTION,\
textWritePrefix=gs://BUCKET_NAME/output/

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/
  • BUCKET_NAME: el nombre de tu segmento de Cloud Storage
  • FIRESTORE_PROJECT_ID: el ID del proyecto en el que se encuentra la instancia de Firestore Google Cloud
  • FIRESTORE_KIND: el tipo de tus entidades de Firestore
  • FIRESTORE_NAMESPACE: el espacio de nombres de tus entidades de Firestore
  • JAVASCRIPT_FUNCTION: el nombre de la función definida por el usuario (FDU) de JavaScript que quieras usar

    Por ejemplo, si el código de tu función de JavaScript es myTransform(inJson) { /*...do stuff...*/ }, el nombre de la función es myTransform. Para ver ejemplos de UDFs de JavaScript, consulta Ejemplos de UDFs.

  • PATH_TO_JAVASCRIPT_UDF_FILE: el URI de Cloud Storage del archivo .js que define la función de JavaScript definida por el usuario (UDF) que quieres usar. Por ejemplo, gs://my-bucket/my-udfs/my_file.js

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/Firestore_to_GCS_Text
{
   "jobName": "JOB_NAME",
   "parameters": {
       "firestoreReadGqlQuery": "SELECT * FROM FIRESTORE_KIND"
       "firestoreReadProjectId": "FIRESTORE_PROJECT_ID",
       "firestoreReadNamespace": "FIRESTORE_NAMESPACE",
       "javascriptTextTransformGcsPath": "PATH_TO_JAVASCRIPT_UDF_FILE",
       "javascriptTextTransformFunctionName": "JAVASCRIPT_FUNCTION",
       "textWritePrefix": "gs://BUCKET_NAME/output/"
   },
   "environment": { "zone": "us-central1-f" }
}

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/
  • BUCKET_NAME: el nombre de tu segmento de Cloud Storage
  • FIRESTORE_PROJECT_ID: el ID del proyecto en el que se encuentra la instancia de Firestore Google Cloud
  • FIRESTORE_KIND: el tipo de tus entidades de Firestore
  • FIRESTORE_NAMESPACE: el espacio de nombres de tus entidades de Firestore
  • JAVASCRIPT_FUNCTION: el nombre de la función definida por el usuario (FDU) de JavaScript que quieras usar

    Por ejemplo, si el código de tu función de JavaScript es myTransform(inJson) { /*...do stuff...*/ }, el nombre de la función es myTransform. Para ver ejemplos de UDFs de JavaScript, consulta Ejemplos de UDFs.

  • PATH_TO_JAVASCRIPT_UDF_FILE: el URI de Cloud Storage del archivo .js que define la función de JavaScript definida por el usuario (UDF) que quieres usar. Por ejemplo, gs://my-bucket/my-udfs/my_file.js

Siguientes pasos