O modelo do Firestore para Cloud Storage Text é um pipeline em lote que lê entidades do Firestore e as grava no Cloud Storage como arquivos de texto. É possível fornecer uma função para processar cada entidade como uma string JSON. Se essa função não for fornecida, cada linha do arquivo de saída será uma entidade serializada em JSON.
Requisitos de pipeline
O Firestore precisa ser configurado no projeto antes de executar o pipeline.
Parâmetros do modelo
Parâmetros obrigatórios
- firestoreReadGqlQuery : uma consulta GQL (https://cloud.google.com/datastore/docs/reference/gql_reference) que especifica quais entidades capturar. Por exemplo,
SELECT * FROM MyKind
. - firestoreReadProjectId : o ID do projeto do Google Cloud que contém a instância do Firestore da qual você quer ler os dados.
- textWritePrefix : o prefixo de caminho do Cloud Storage que especifica onde os dados são gravados. (Exemplo: gs://mybucket/somefolder/).
Parâmetros opcionais
- firestoreReadNamespace : O namespace das entidades solicitadas. Para usar o namespace padrão, deixe esse parâmetro em branco.
- javascriptTextTransformGcsPath : o URI do Cloud Storage do arquivo .js que define a função JavaScript definida pelo usuário (UDF) a ser usada. Por exemplo,
gs://my-bucket/my-udfs/my_file.js
. - javascriptTextTransformFunctionName: o nome da função JavaScript definida pelo usuário (UDF) a ser usada. Por exemplo, se o código de função do JavaScript for
myTransform(inJson) { /*...do stuff...*/ }
, o nome da função serámyTransform
. Para ver exemplos de UDFs em JavaScript, consulte os exemplos de UDF (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples).
Função definida pelo usuário
Também é possível estender esse modelo escrevendo uma função definida pelo usuário (UDF). O modelo chama a UDF para cada elemento de entrada. Os payloads dos elementos são serializados como strings JSON. Para mais informações, consulte Criar funções definidas pelo usuário para modelos do Dataflow.
Especificação da função
A UDF tem a seguinte especificação:
- Entrada: uma entidade do Firestore, serializada como uma string JSON.
- Saída: o valor da string a ser gravada no Cloud Storage.
Executar o modelo
Console
- Acesse a página Criar job usando um modelo do Dataflow. Acesse Criar job usando um modelo
- No campo Nome do job, insira um nome exclusivo.
- Opcional: em Endpoint regional, selecione um valor no menu suspenso. A região padrão é
us-central1
.Para ver uma lista de regiões em que é possível executar um job do Dataflow, consulte Locais do Dataflow.
- No menu suspenso Modelo do Dataflow, selecione the Firestore to Text Files on Cloud Storage template.
- Nos campos de parâmetro fornecidos, insira os valores de parâmetro.
- Cliquem em Executar job.
gcloud
No shell ou no terminal, execute o modelo:
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/
Substitua:
JOB_NAME
: um nome de job de sua escolhaREGION_NAME
: a região onde você quer implantar o job do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que você quer usarUse estes valores:
latest
para usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00
, para usar uma versão específica do modelo, que pode ser aninhada na respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
BUCKET_NAME
: o nome do bucket do Cloud StorageFIRESTORE_PROJECT_ID
: o ID do projeto do Google Cloud em que a instância do Firestore existeFIRESTORE_KIND
: o tipo das suas entidades do FirestoreFIRESTORE_NAMESPACE
: o namespace das entidades do FirestoreJAVASCRIPT_FUNCTION
: o nome da função definida pelo usuário (UDF) do JavaScript que você quer usarPor exemplo, se o código de função do JavaScript for
myTransform(inJson) { /*...do stuff...*/ }
, o nome da função serámyTransform
. Para amostras de UDFs do JavaScript, consulte os exemplos de UDF.PATH_TO_JAVASCRIPT_UDF_FILE
: O URI do Cloud Storage do arquivo.js
que define a função definida pelo usuário (UDF) do JavaScript que você quer usar, por exemplo,gs://my-bucket/my-udfs/my_file.js
API
Para executar o modelo usando a API REST, envie uma solicitação HTTP POST. Para mais informações sobre a
API e os respectivos escopos de autorização, consulte
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" } }
Substitua:
PROJECT_ID
: o ID do projeto do Google Cloud em que você quer executar o job do DataflowJOB_NAME
: um nome de job de sua escolhaLOCATION
: a região onde você quer implantar o job do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que você quer usarUse estes valores:
latest
para usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00
, para usar uma versão específica do modelo, que pode ser aninhada na respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
BUCKET_NAME
: o nome do bucket do Cloud StorageFIRESTORE_PROJECT_ID
: o ID do projeto do Google Cloud em que a instância do Firestore existeFIRESTORE_KIND
: o tipo das suas entidades do FirestoreFIRESTORE_NAMESPACE
: o namespace das entidades do FirestoreJAVASCRIPT_FUNCTION
: o nome da função definida pelo usuário (UDF) do JavaScript que você quer usarPor exemplo, se o código de função do JavaScript for
myTransform(inJson) { /*...do stuff...*/ }
, o nome da função serámyTransform
. Para amostras de UDFs do JavaScript, consulte os exemplos de UDF.PATH_TO_JAVASCRIPT_UDF_FILE
: O URI do Cloud Storage do arquivo.js
que define a função definida pelo usuário (UDF) do JavaScript que você quer usar, por exemplo,gs://my-bucket/my-udfs/my_file.js
A seguir
- Saiba mais sobre os modelos do Dataflow.
- Confira a lista de modelos fornecidos pelo Google.