Questo modello crea una pipeline batch che legge i documenti da MongoDB e li scrive in BigQuery.
Se vuoi acquisire i dati delle modifiche in tempo reale di MongoDB, puoi utilizzare il modello MongoDB a BigQuery (CDC).
Requisiti della pipeline
- Deve esistere il set di dati BigQuery di destinazione.
- L'istanza MongoDB di origine deve essere accessibile dalle macchine worker Dataflow.
Formato di output
Il formato dei record di output dipende dal valore del parametro userOption
. Se userOption
è
NONE
, l'output ha il seguente schema. Il campo source_data
contiene il documento in formato JSON.
[ {"name":"id","type":"STRING"}, {"name":"source_data","type":"STRING"}, {"name":"timestamp","type":"TIMESTAMP"} ]
Se userOption
è FLATTEN
, la pipeline appiattisce
i documenti e scrive i campi di primo livello come colonne di tabella. Ad esempio, supponiamo che i documenti nella raccolta MongoDB contengano i seguenti campi:
"_id"
(string
)"title"
(string
)"genre"
(string
)
Utilizzando FLATTEN
, l'output ha il seguente schema. Il campo timestamp
viene aggiunto dal modello.
[ {"name":"_id","type":"STRING"}, {"name":"title","type":"STRING"}, {"name":"genre","type":"STRING"}, {"name":"timestamp","type":"TIMESTAMP"} ]
Parametri del modello
Parametro | Descrizione |
---|---|
mongoDbUri |
URI di connessione MongoDB nel formato mongodb+srv://:@ . |
database |
Database in MongoDB da cui leggere la raccolta. Ad esempio: my-db . |
collection |
Nome della raccolta all'interno del database MongoDB. Ad esempio: my-collection . |
outputTableSpec |
Tabella BigQuery in cui scrivere. Ad esempio, bigquery-project:dataset.output_table . |
userOption |
FLATTEN o NONE . FLATTEN appiattisce i documenti al primo livello. NONE archivia l'intero documento come stringa JSON. |
javascriptDocumentTransformGcsPath |
(Facoltativo)
L'URI Cloud Storage del file .js che definisce la funzione JavaScript definita dall'utente che vuoi utilizzare. Ad esempio: gs://my-bucket/my-udfs/my_file.js .
|
javascriptDocumentTransformFunctionName |
(Facoltativo)
Il nome della funzione definita dall'utente di JavaScript che vuoi utilizzare.
Ad esempio, se il codice della funzione JavaScript è
myTransform(inJson) { /*...do stuff...*/ } , il nome della funzione è
myTransform . Per esempi di funzioni JavaScript definite, consulta gli esempi di funzioni definite dall'utente.
|
useStorageWriteApi |
(Facoltativo)
Se true , la pipeline utilizza l'
API BigQuery Storage Write. Il valore predefinito è false . Per ulteriori informazioni, consulta la pagina relativa all'
utilizzo dell'API Storage Write.
|
useStorageWriteApiAtLeastOnce |
(Facoltativo)
Quando si utilizza l'API Storage Write, specifica la semantica di scrittura. Per utilizzare la
semantica at-least-once, imposta questo parametro su true . Per usare la semantica "exactly-once",
imposta il parametro su false . Questo parametro si applica solo quando
useStorageWriteApi è true . Il valore predefinito è false .
|
Funzione definita dall'utente
Facoltativamente, puoi estendere questo modello scrivendo una funzione definita dall'utente dall'utente in JavaScript. Il modello chiama la funzione definita dall'utente per ogni elemento di input. I payload degli elementi sono serializzati come stringhe JSON.
Per utilizzare una funzione definita dall'utente, carica il file JavaScript in Cloud Storage e imposta i seguenti parametri del modello:
Parametro | Descrizione |
---|---|
javascriptDocumentTransformGcsPath |
Il percorso di Cloud Storage del file JavaScript. |
javascriptDocumentTransformFunctionName |
Il nome della funzione JavaScript. |
Per maggiori informazioni, consulta Creare funzioni definite dall'utente per i modelli Dataflow.
Specifica della funzione
La funzione definita dall'utente ha le seguenti specifiche:
userOption
è NONE
, l'oggetto JSON deve includere
una proprietà denominata _id
contenente l'ID documento.Esegui il modello
Console
- Vai alla pagina Crea job da modello di Dataflow. Vai a Crea job da modello
- Nel campo Nome job, inserisci un nome univoco per il job.
- (Facoltativo) Per Endpoint a livello di regione, seleziona un valore dal menu a discesa. La regione predefinita è
us-central1
.Per un elenco delle regioni in cui puoi eseguire un job Dataflow, vedi Località Dataflow.
- Nel menu a discesa Modello Dataflow, seleziona the MongoDB to BigQuery template.
- Nei campi dei parametri forniti, inserisci i valori dei parametri.
- Fai clic su Esegui job.
gcloud
Nella shell o nel terminale, esegui il modello:
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
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto Google Cloud in cui vuoi eseguire il job DataflowJOB_NAME
: un nome job univoco a tua sceltaREGION_NAME
: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1
VERSION
: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latest
per utilizzare la versione più recente del modello, disponibile nella cartella padre senza data del bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, come
2023-09-12-00_RC00
, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella padre con data all'interno del bucket: gs://dataflow-templates-REGION_NAME/
OUTPUT_TABLE_SPEC
: nome della tabella BigQuery di destinazione.MONGO_DB_URI
: il tuo URI MongoDB.DATABASE
: il tuo database MongoDB.COLLECTION
: la tua raccolta MongoDB.USER_OPTION
: FLATTEN o NESSUNO.
API
Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per maggiori informazioni sull'API e sui relativi ambiti di autorizzazione, consulta 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", } }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto Google Cloud in cui vuoi eseguire il job DataflowJOB_NAME
: un nome job univoco a tua sceltaLOCATION
: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1
VERSION
: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latest
per utilizzare la versione più recente del modello, disponibile nella cartella padre senza data del bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, come
2023-09-12-00_RC00
, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella padre con data all'interno del bucket: gs://dataflow-templates-REGION_NAME/
OUTPUT_TABLE_SPEC
: nome della tabella BigQuery di destinazione.MONGO_DB_URI
: il tuo URI MongoDB.DATABASE
: il tuo database MongoDB.COLLECTION
: la tua raccolta MongoDB.USER_OPTION
: FLATTEN o NESSUNO.
Passaggi successivi
- Scopri di più sui modelli Dataflow.
- Consulta l'elenco dei modelli forniti da Google.