Le modèle BigQuery vers Bigtable est un pipeline par lots qui copie les données d'une table BigQuery dans une table Bigtable existante. Le modèle peut lire la table entière ou lire des enregistrements spécifiques indiqués par une requête fournie.
Conditions requises pour ce pipeline
- La table BigQuery source doit exister.
- La table Bigtable doit exister.
- Le compte de service du nœud de calcul doit disposer de l'autorisation
roles/bigquery.datasets.create
. Pour en savoir plus, consultez la page Présentation de IAM.
Paramètres de modèle
Paramètres obligatoires
- readIdColumn : nom de la colonne BigQuery stockant l'identifiant unique de la ligne.
- bigtableWriteInstanceId : ID de l'instance Bigtable qui contient la table.
- bigtableWriteTableId : ID de la table Bigtable dans laquelle écrire les données.
- bigtableWriteColumnFamily : nom de la famille de colonnes de la table Bigtable dans laquelle écrire les données.
Paramètres facultatifs
- inputTableSpec : table BigQuery à lire. Format :
projectId:datasetId.tablename
. Si vous spécifiezinputTableSpec
, le modèle lit les données directement à partir de l'espace de stockage BigQuery à l'aide de l'API BigQuery Storage Read (https://cloud.google.com/bigquery/docs/reference/storage). Pour en savoir plus sur les limites de l'API Storage Read, consultez la page https://cloud.google.com/bigquery/docs/reference/storage#limitations. Vous devez spécifierinputTableSpec
ouquery
. Si vous définissez les deux paramètres, le modèle utilise le paramètrequery
. (Exemple: bigquery-project:dataset.input_table). - outputDeadletterTable : table BigQuery pour les messages qui n'ont pas pu atteindre la table de sortie, au format <ID_PROJET>:<NOM_ENSEMBLE_DE_DONNÉES>.<TABLE_LETTRES_MORTES>. Si une table n'existe pas, elle est créée lors de l'exécution du pipeline. Si aucune valeur n'est spécifiée,
<outputTableSpec>_error_records
est utilisé. (Par exemple : your-project-id:your-dataset.your-table-name). - query : requête SQL à utiliser pour lire les données à partir de BigQuery. Si l'ensemble de données BigQuery se trouve dans un projet différent de celui de la tâche Dataflow, spécifiez le nom complet de l'ensemble de données dans la requête SQL, par exemple : <ID_PROJET>.<NOM_ENSEMBLE_DE_DONNÉES>.<NOM_TABLE>. Par défaut, le paramètre
query
utilise GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql), sauf siuseLegacySql
esttrue
. Vous devez spécifierinputTableSpec
ouquery
. Si vous définissez les deux paramètres, le modèle utilise le paramètrequery
. (Exemple : sélectionnez * dans sampledb.sample_table). - useLegacySql : Défini sur la valeur "true" pour utiliser l'ancien SQL. Ce paramètre s'applique uniquement lorsque vous utilisez le paramètre
query
. La valeur par défaut est "false". - queryLocation : requis lors de la lecture à partir d'une vue autorisée sans l'autorisation de la table sous-jacente. (Par exemple : US).
- bigtableRpcAttemptTimeoutMs : délai avant expiration (en millisecondes) de chaque tentative de RPC Bigtable.
- bigtableRpcTimeoutMs : délai avant expiration total (en millisecondes) d'une opération RPC Bigtable.
- bigtableAdditionalRetryCodes : codes de nouvelles tentatives supplémentaires. (Exemple: RESOURCE_EXHAUSTED,DEADLINE_EXCEEDED).
- bigtableWriteAppProfile : ID du profil d'application Bigtable à utiliser pour l'exportation. Si vous ne spécifiez pas de profil d'application, Bigtable utilise le profil d'application par défaut (https://cloud.google.com/bigtable/docs/app-profiles#default-app-profile) de l'instance.
- bigtableWriteProjectId : ID du projet Google Cloud contenant l'instance Bigtable dans laquelle écrire les données.
- bigtableBulkWriteLatencyTargetMs : cible de latence de Bigtable en millisecondes pour la limitation basée sur la latence.
- bigtableBulkWriteMaxRowKeyCount : nombre maximal de clés de ligne dans une opération Bigtable d'écriture par lot.
- bigtableBulkWriteMaxRequestSizeBytes : nombre maximal d'octets à inclure par opération Bigtable d'écriture par lot.
Exécuter le modèle
Console
- Accédez à la page Dataflow Créer un job à partir d'un modèle. Accéder à la page Créer un job à partir d'un modèle
- Dans le champ Nom du job, saisissez un nom de job unique.
- Facultatif : pour Point de terminaison régional, sélectionnez une valeur dans le menu déroulant. La région par défaut est
us-central1
.Pour obtenir la liste des régions dans lesquelles vous pouvez exécuter un job Dataflow, consultez la page Emplacements Dataflow.
- Dans le menu déroulant Modèle Dataflow, sélectionnez the BigQuery to Bigtable template.
- Dans les champs fournis, saisissez vos valeurs de paramètres.
- Cliquez sur Run Job (Exécuter la tâche).
gcloud
Dans le shell ou le terminal, exécutez le modèle :
gcloud dataflow flex-template run JOB_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/BigQuery_to_Bigtable \ --parameters \ readIdColumn=READ_COLUMN_ID,\ inputTableSpec=INPUT_TABLE_SPEC,\ bigtableWriteInstanceId=BIGTABLE_INSTANCE_ID,\ bigtableWriteTableId=BIGTABLE_TABLE_ID,\ bigtableWriteColumnFamily=BIGTABLE_COLUMN_FAMILY
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet Google Cloud dans lequel vous souhaitez exécuter le job DataflowJOB_NAME
: nom de job unique de votre choixREGION_NAME
: région dans laquelle vous souhaitez déployer votre job Dataflow, par exempleus-central1
VERSION
: version du modèle que vous souhaitez utiliserVous pouvez utiliser les valeurs suivantes :
latest
pour utiliser la dernière version du modèle, disponible dans le dossier parent non daté du bucket gs://dataflow-templates-REGION_NAME/latest/- Le nom de la version, par exemple
2023-09-12-00_RC00
, pour utiliser une version spécifique du modèle, qui est imbriqué dans le dossier parent daté respectif dans le bucket : gs://dataflow-templates-REGION_NAME/
READ_COLUMN_ID
: colonne BigQuery d'ID uniques.INPUT_TABLE_SPEC
: nom de votre table BigQuery.BIGTABLE_INSTANCE_ID
: ID de votre instance Bigtable.BIGTABLE_TABLE_ID
: ID de votre table Bigtable.BIGTABLE_COLUMN_FAMILY
: famille de colonnes de votre table Bigtable.
API
Pour exécuter le modèle à l'aide de l'API REST, envoyez une requête HTTP POST. Pour en savoir plus sur l'API, ses autorisations et leurs champs d'application, consultez la section projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "readIdColumn": "READ_COLUMN_ID", "inputTableSpec": "INPUT_TABLE_SPEC", "bigtableWriteInstanceId": "BIGTABLE_INSTANCE_ID", "bigtableWriteTableId": "BIGTABLE_TABLE_ID", "bigtableWriteColumnFamily": "BIGTABLE_COLUMN_FAMILY" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/BigQuery_to_Bigtable", } }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet Google Cloud dans lequel vous souhaitez exécuter le job DataflowJOB_NAME
: nom de job unique de votre choixLOCATION
: région dans laquelle vous souhaitez déployer votre job Dataflow, par exempleus-central1
VERSION
: version du modèle que vous souhaitez utiliserVous pouvez utiliser les valeurs suivantes :
latest
pour utiliser la dernière version du modèle, disponible dans le dossier parent non daté du bucket gs://dataflow-templates-REGION_NAME/latest/- Le nom de la version, par exemple
2023-09-12-00_RC00
, pour utiliser une version spécifique du modèle, qui est imbriqué dans le dossier parent daté respectif dans le bucket : gs://dataflow-templates-REGION_NAME/
READ_COLUMN_ID
: colonne BigQuery d'ID uniques.INPUT_TABLE_SPEC
: nom de votre table BigQuery.BIGTABLE_INSTANCE_ID
: ID de votre instance Bigtable.BIGTABLE_TABLE_ID
: ID de votre table Bigtable.BIGTABLE_COLUMN_FAMILY
: famille de colonnes de votre table Bigtable.
Étapes suivantes
- Apprenez-en plus sur les modèles Dataflow.
- Consultez la liste des modèles fournis par Google.