O modelo de texto do Firestore para o Cloud Storage é um pipeline em lote que lê entidades do Firestore e escreve-as no Cloud Storage como ficheiros de texto. Pode fornecer uma função para processar cada entidade como uma string JSON. Se não fornecer essa função, cada linha no ficheiro de saída será uma entidade serializada em JSON.
Requisitos do pipeline
O Firestore tem de ser configurado no projeto antes de executar o pipeline.
Parâmetros de modelos
Parâmetros obrigatórios
- firestoreReadGqlQuery: uma consulta GQL (https://cloud.google.com/datastore/docs/reference/gql_reference) que especifica que entidades obter. Por exemplo,
SELECT * FROM MyKind
. - firestoreReadProjectId: o ID do projeto do Google Cloud que contém a instância do Firestore a partir da qual quer ler dados.
- textWritePrefix: o prefixo do caminho do Cloud Storage que especifica onde os dados são escritos. Por exemplo,
gs://mybucket/somefolder/
.
Parâmetros opcionais
- firestoreReadNamespace: o espaço de nomes das entidades pedidas. Para usar o espaço de nomes predefinido, deixe este parâmetro em branco.
- javascriptTextTransformGcsPath: o URI do Cloud Storage do ficheiro .js que define a função definida pelo utilizador (FDU) JavaScript a usar. Por exemplo,
gs://my-bucket/my-udfs/my_file.js
. - javascriptTextTransformFunctionName: o nome da função definida pelo utilizador (FDU) JavaScript a usar. Por exemplo, se o código da função JavaScript for
myTransform(inJson) { /*...do stuff...*/ }
, o nome da função émyTransform
. Para ver exemplos de UDFs JavaScript, consulte Exemplos de UDFs (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples).
Função definida pelo utilizador
Opcionalmente, pode estender este modelo escrevendo uma função definida pelo utilizador (FDU). O modelo chama a FDU para cada elemento de entrada. Os payloads dos elementos são serializados como strings JSON. Para mais informações, consulte o artigo Crie funções definidas pelo utilizador para modelos do Dataflow.
Especificação da função
A FDU tem a seguinte especificação:
- Entrada: uma entidade do Firestore, serializada como uma string JSON.
- Saída: o valor da string a escrever no Cloud Storage.
Execute o modelo
Consola
- Aceda à página do fluxo de dados Criar tarefa a partir de um modelo. Aceda a Criar tarefa a partir de modelo
- No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
- Opcional: para Ponto final regional, selecione um valor no menu pendente. A região
predefinida é
us-central1
.Para ver uma lista das regiões onde pode executar uma tarefa do Dataflow, consulte as localizações do Dataflow.
- No menu pendente Modelo do fluxo de dados, selecione the Firestore to Text Files on Cloud Storage template.
- Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
- Clique em Executar tarefa.
gcloud
Na 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 o seguinte:
JOB_NAME
: um nome de tarefa exclusivo à sua escolhaREGION_NAME
: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que quer usarPode usar os seguintes valores:
latest
para usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: 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 encontrada aninhada na pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
BUCKET_NAME
: o nome do seu contentor do Cloud StorageFIRESTORE_PROJECT_ID
: o Google Cloud ID do projeto onde a instância do Firestore existeFIRESTORE_KIND
: o tipo das suas entidades do FirestoreFIRESTORE_NAMESPACE
: o espaço de nomes das suas entidades do FirestoreJAVASCRIPT_FUNCTION
: o nome da função definida pelo utilizador (FDU) JavaScript que quer usarPor exemplo, se o código da função JavaScript for
myTransform(inJson) { /*...do stuff...*/ }
, o nome da função émyTransform
. Para ver exemplos de UDFs JavaScript, consulte os exemplos de UDFs.PATH_TO_JAVASCRIPT_UDF_FILE
: o URI do Cloud Storage do ficheiro.js
que define a função definida pelo utilizador (FDU) JavaScript que quer usar, por exemplo,gs://my-bucket/my-udfs/my_file.js
API
Para executar o modelo através da API REST, envie um pedido HTTP POST. Para mais informações sobre a API e os respetivos âmbitos 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 o seguinte:
PROJECT_ID
: o ID do projeto onde quer executar a tarefa do Dataflow Google CloudJOB_NAME
: um nome de tarefa exclusivo à sua escolhaLOCATION
: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que quer usarPode usar os seguintes valores:
latest
para usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: 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 encontrada aninhada na pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
BUCKET_NAME
: o nome do seu contentor do Cloud StorageFIRESTORE_PROJECT_ID
: o Google Cloud ID do projeto onde a instância do Firestore existeFIRESTORE_KIND
: o tipo das suas entidades do FirestoreFIRESTORE_NAMESPACE
: o espaço de nomes das suas entidades do FirestoreJAVASCRIPT_FUNCTION
: o nome da função definida pelo utilizador (FDU) JavaScript que quer usarPor exemplo, se o código da função JavaScript for
myTransform(inJson) { /*...do stuff...*/ }
, o nome da função émyTransform
. Para ver exemplos de UDFs JavaScript, consulte os exemplos de UDFs.PATH_TO_JAVASCRIPT_UDF_FILE
: o URI do Cloud Storage do ficheiro.js
que define a função definida pelo utilizador (FDU) JavaScript que quer usar, por exemplo,gs://my-bucket/my-udfs/my_file.js
O que se segue?
- Saiba mais sobre os modelos do Dataflow.
- Consulte a lista de modelos fornecidos pela Google.