Esse modelo cria um pipeline em lote que lê documentos do MongoDB e os grava no BigQuery.
Se você quiser capturar dados de fluxo de alterações do MongoDB, use o modelo do MongoDB para BigQuery (CDC).
Requisitos de pipeline
- O conjunto de dados de destino do BigQuery precisa existir.
- A instância de origem do MongoDB precisa ser acessível nas máquinas de trabalho do Dataflow.
Formato da saída
O formato dos registros de saída depende do valor do parâmetro userOption
. Se userOption
for NONE
, a saída terá o esquema a seguir. O campo source_data
contém o documento no formato JSON.
[ {"name":"id","type":"STRING"}, {"name":"source_data","type":"STRING"}, {"name":"timestamp","type":"TIMESTAMP"} ]
Se userOption
for FLATTEN
, o pipeline nivelará os documentos e gravará os campos de nível superior como colunas de tabela. Por exemplo, suponha que os documentos na coleção do MongoDB contenham os seguintes campos:
"_id"
(string
)"title"
(string
)"genre"
(string
)
Usando FLATTEN
, a saída tem o esquema a seguir. O campo timestamp
é adicionado pelo modelo.
[ {"name":"_id","type":"STRING"}, {"name":"title","type":"STRING"}, {"name":"genre","type":"STRING"}, {"name":"timestamp","type":"TIMESTAMP"} ]
Parâmetros do modelo
Parâmetro | Descrição |
---|---|
mongoDbUri |
URI de conexão do MongoDB no formato mongodb+srv://:@ . |
database |
Banco de dados no MongoDB para leitura da coleção. Por exemplo, my-db . |
collection |
Nome da coleção dentro do banco de dados MongoDB. Por exemplo, my-collection . |
outputTableSpec |
Tabela do BigQuery a ser gravada. Por exemplo, bigquery-project:dataset.output_table . |
userOption |
FLATTEN ou NONE . FLATTEN nivela os documentos no primeiro nível. NONE armazena todo o documento como uma string JSON. |
javascriptDocumentTransformGcsPath |
(Opcional)
O URI do Cloud Storage do arquivo .js que define a função definida
pelo usuário (UDF, na sigla em inglês) do JavaScript que você quer usar. Por exemplo, gs://my-bucket/my-udfs/my_file.js .
|
javascriptDocumentTransformFunctionName |
(Opcional)
O nome da função definida pelo usuário (UDF) do JavaScript que você quer usar.
Por 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.
|
useStorageWriteApi |
(Opcional) Se true , o pipeline usará a
API BigQuery Storage Write. O valor padrão é false . Para mais informações, consulte
Como usar a API Storage Write.
|
useStorageWriteApiAtLeastOnce |
(Opcional) Ao usar a API Storage Write, especifica a semântica de gravação. Para usar
semântica pelo menos uma vez, defina esse parâmetro como true . Para usar semântica exatamente uma vez,
defina o parâmetro como false . Esse parâmetro se aplica apenas quando
useStorageWriteApi é true . O valor padrão é false .
|
Função definida pelo usuário
Se quiser, estenda esse modelo gravando uma função definida pelo usuário (UDF) em JavaScript. O modelo chama a UDF para cada elemento de entrada. Os payloads dos elementos são serializados como strings JSON.
Para usar uma UDF, faça upload do arquivo JavaScript no Cloud Storage e defina os seguintes parâmetros de modelo:
Parâmetro | Descrição |
---|---|
javascriptDocumentTransformGcsPath |
O local do arquivo JavaScript no Cloud Storage. |
javascriptDocumentTransformFunctionName |
O nome da função JavaScript. |
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:
userOption
for NONE
, o objeto JSON precisará incluir uma propriedade chamada _id
que contenha o ID do documento.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 MongoDB to BigQuery 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 flex-template run JOB_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/MongoDB_to_BigQuery \ --parameters \ outputTableSpec=OUTPUT_TABLE_SPEC,\ mongoDbUri=MONGO_DB_URI,\ database=DATABASE,\ collection=COLLECTION,\ userOption=USER_OPTION
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 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/
OUTPUT_TABLE_SPEC
: o nome da tabela de destino do BigQuery.MONGO_DB_URI
: o URI do MongoDB.DATABASE
: o banco de dados do MongoDB.COLLECTION
: sua coleção do MongoDB.USER_OPTION
: FLATTEN ou NENHUM.
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/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "inputTableSpec": "INPUT_TABLE_SPEC", "mongoDbUri": "MONGO_DB_URI", "database": "DATABASE", "collection": "COLLECTION", "userOption": "USER_OPTION" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/MongoDB_to_BigQuery", } }
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/
OUTPUT_TABLE_SPEC
: o nome da tabela de destino do BigQuery.MONGO_DB_URI
: o URI do MongoDB.DATABASE
: o banco de dados do MongoDB.COLLECTION
: sua coleção do MongoDB.USER_OPTION
: FLATTEN ou NENHUM.
A seguir
- Saiba mais sobre os modelos do Dataflow.
- Confira a lista de modelos fornecidos pelo Google.