O modelo de texto do Cloud Storage para o Firestore é um pipeline em lote que importa de documentos JSON armazenados no Cloud Storage para o Firestore.
Requisitos do pipeline
O Firestore tem de estar ativado no projeto de destino.
Formato de entrada
Cada ficheiro de entrada tem de conter JSON delimitado por novas linhas, em que cada linha contém uma representação JSON de um tipo de dados Entity
do Datastore.
Por exemplo, o JSON seguinte representa um documento numa coleção denominada
Users
. O exemplo está formatado para facilitar a leitura, mas cada documento
tem de aparecer como uma única linha de entrada.
{ "key": { "partitionId": { "projectId": "my-project" }, "path": [ { "kind": "users", "name": "alovelace" } ] }, "properties": { "first": { "stringValue": "Ada" }, "last": { "stringValue": "Lovelace" }, "born": { "integerValue": "1815", "excludeFromIndexes": true } } }
Para mais informações acerca do modelo de documento, consulte o artigo Entidades, propriedades e chaves.
Parâmetros de modelos
Parâmetros obrigatórios
- textReadPattern: um padrão de caminho do Cloud Storage que especifica a localização dos seus ficheiros de dados de texto. Por exemplo,
gs://mybucket/somepath/*.json
. - firestoreWriteProjectId: o ID do projeto do Google Cloud no qual escrever as entidades do Firestore.
- errorWritePath: o ficheiro de saída do registo de erros a usar para falhas de escrita que ocorrem durante o processamento. Por exemplo,
gs://your-bucket/errors/
.
Parâmetros opcionais
- 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). - firestoreHintNumWorkers: sugestão para o número esperado de trabalhadores no passo de limitação do aumento gradual do Firestore. O valor predefinido é
500
.
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 linha de texto de um ficheiro de entrada do Cloud Storage.
- Saída: um
Entity
, serializado como uma string JSON.
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 Text Files on Cloud Storage to Firestore 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/GCS_Text_to_Firestore \ --region REGION_NAME \ --parameters \ textReadPattern=PATH_TO_INPUT_TEXT_FILES,\ javascriptTextTransformGcsPath=PATH_TO_JAVASCRIPT_UDF_FILE,\ javascriptTextTransformFunctionName=JAVASCRIPT_FUNCTION,\ firestoreWriteProjectId=PROJECT_ID,\ errorWritePath=ERROR_FILE_WRITE_PATH
Substitua o seguinte:
JOB_NAME
: um nome de tarefa exclusivo à sua escolhaVERSION
: 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/
REGION_NAME
: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1
PATH_TO_INPUT_TEXT_FILES
: o padrão dos ficheiros de entrada no Cloud StorageJAVASCRIPT_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
ERROR_FILE_WRITE_PATH
: o caminho pretendido para o ficheiro de erros no Cloud Storage
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/GCS_Text_to_Firestore { "jobName": "JOB_NAME", "parameters": { "textReadPattern": "PATH_TO_INPUT_TEXT_FILES", "javascriptTextTransformGcsPath": "PATH_TO_JAVASCRIPT_UDF_FILE", "javascriptTextTransformFunctionName": "JAVASCRIPT_FUNCTION", "firestoreWriteProjectId": "PROJECT_ID", "errorWritePath": "ERROR_FILE_WRITE_PATH" }, "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 escolhaVERSION
: 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/
LOCATION
: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1
PATH_TO_INPUT_TEXT_FILES
: o padrão dos ficheiros de entrada no Cloud StorageJAVASCRIPT_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
ERROR_FILE_WRITE_PATH
: o caminho pretendido para o ficheiro de erros no Cloud Storage
O que se segue?
- Saiba mais sobre os modelos do Dataflow.
- Consulte a lista de modelos fornecidos pela Google.