Le modèle BigQuery vers Clickhouse est un pipeline par lots qui copie les données d'une table BigQuery dans une table Clickhouse 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 Clickhouse doit exister.
Paramètres de modèle
Paramètres obligatoires
- jdbcUrl : URL JDBC ClickHouse cible au format
jdbc:clickhouse://host:port/schema
. Vous pouvez ajouter n'importe quelle option JDBC à la fin de l'URL JDBC. Par exemple,jdbc:clickhouse://localhost:8123/default
. - clickHouseUsername : nom d'utilisateur ClickHouse avec lequel s'authentifier.
- clickHouseTable : nom de la table ClickHouse cible dans laquelle insérer les données.
Paramètres facultatifs
- inputTableSpec : table BigQuery à lire. Si vous spécifiez
inputTableSpec
, 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 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
. Par exemple,<BIGQUERY_PROJECT>:<DATASET_NAME>.<INPUT_TABLE>
. - outputDeadletterTable : table BigQuery pour les messages qui n'ont pas pu atteindre la table de sortie. En l'absence de table existante, une table va être créée lors de l'exécution du pipeline. Si aucune valeur n'est spécifiée,
<outputTableSpec>_error_records
est utilisé. Par exemple,<PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>
. - 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
. Par exemple,select * from sampledb.sample_table
. - useLegacySql : définissez la valeur sur
true
pour utiliser l'ancien SQL. Ce paramètre ne s'applique que lorsque vous utilisez le paramètrequery
. La valeur par défaut estfalse
. - queryLocation : requis lors de la lecture à partir d'une vue autorisée sans l'autorisation de la table sous-jacente. Exemple :
US
- queryTempDataset : cette option vous permet de définir un ensemble de données existant pour créer la table temporaire dans laquelle stocker les résultats de la requête. Exemple :
temp_dataset
- KMSEncryptionKey : si vous lisez des données depuis BigQuery à l'aide d'une source de requête, utilisez cette clé Cloud KMS pour chiffrer les tables temporaires créées. Exemple :
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key
- clickHousePassword : mot de passe ClickHouse avec lequel s'authentifier.
- maxInsertBlockSize : taille de bloc maximale pour l'insertion, si nous contrôlons la création de blocs pour l'insertion (option ClickHouseIO).
- insertDistributedSync : si ce paramètre est activé, la requête d'insertion est placée dans les attentes distribuées jusqu'à ce que les données soient envoyées à tous les nœuds du cluster. (option ClickHouseIO).
- insertQuorum : pour les requêtes INSERT dans la table répliquée, attendez l'écriture pour le nombre spécifié de réplicas et linéarisez l'ajout des données. 0 : désactivé. Ce paramètre est désactivé dans les paramètres par défaut du serveur (option ClickHouseIO).
- insertDeduplicate : pour les requêtes INSERT dans la table répliquée, indique que la déduplication des blocs d'insertion doit être effectuée.
- maxRetries : nombre maximal de nouvelles tentatives par insertion.
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 Clickhouse 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_Clickhouse \ --parameters \ jdbcUrl=JDBC_URL,\ clickHouseUsername=CLICKHOUSE_USERNAME,\ clickHouseTable=CLICKHOUSE_TABLE
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/
JDBC_URL
: votre URL JDBC.CLICKHOUSE_USERNAME
: votre nom d'utilisateur Clickhouse.CLICKHOUSE_TABLE
: votre table Clickhouse.
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": { "jdbcUrl": "JDBC_URL", "clickHouseUsername": "CLICKHOUSE_USERNAME", "clickHouseTable": "CLICKHOUSE_TABLE" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/BigQuery_to_Clickhouse", } }
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/
JDBC_URL
: votre URL JDBC.CLICKHOUSE_USERNAME
: votre nom d'utilisateur Clickhouse.CLICKHOUSE_TABLE
: votre table Clickhouse.
Étapes suivantes
- Apprenez-en plus sur les modèles Dataflow.
- Consultez la liste des modèles fournis par Google.