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 pour l'authentification.
- clickHouseTable : nom de la table ClickHouse cible dans laquelle insérer les données.
Paramètres facultatifs
- inputTableSpec : table BigQuery à partir de laquelle effectuer la lecture. 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 la page https://cloud.google.com/bigquery/docs/reference/storage#limitations. Vous devez spécifierinputTableSpecouquery. 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_recordsest 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
queryutilise GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql), sauf siuseLegacySqlesttrue. Vous devez spécifierinputTableSpecouquery. 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
truepour 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. Par 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. Par exemple,
temp_dataset. - KMSEncryptionKey : si vous effectuez une lecture à partir de BigQuery à l'aide d'une source de requête, utilisez cette clé Cloud KMS pour chiffrer toutes les tables temporaires créées. Par exemple,
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key. - clickHousePassword : mot de passe ClickHouse pour l'authentification.
- maxInsertBlockSize : taille maximale du bloc pour l'insertion, si nous contrôlons la création de blocs pour l'insertion (option ClickHouseIO).
- insertDistributedSync : si ce paramètre est activé, insérez la requête dans la distribution et attendez 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épliques 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, spécifie 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 le modèle BigQuery vers Clickhouse.
- 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/ \ --parameters \ jdbcUrl=JDBC_URL,\ clickHouseUsername=CLICKHOUSE_USERNAME,\ clickHouseTable=CLICKHOUSE_TABLE
Remplacez les éléments suivants :
PROJECT_ID: ID du projet dans lequel vous souhaitez exécuter le job Dataflow Google CloudJOB_NAME: nom de job unique de votre choixREGION_NAME: région dans laquelle vous souhaitez déployer votre job Dataflow, par exempleus-central1VERSION: version du modèle que vous souhaitez utiliserVous pouvez utiliser les valeurs suivantes :
latestpour 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/", } }
Remplacez les éléments suivants :
PROJECT_ID: ID du projet dans lequel vous souhaitez exécuter le job Dataflow Google CloudJOB_NAME: nom de job unique de votre choixLOCATION: région dans laquelle vous souhaitez déployer votre job Dataflow, par exempleus-central1VERSION: version du modèle que vous souhaitez utiliserVous pouvez utiliser les valeurs suivantes :
latestpour 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.
Étape suivante
- Apprenez-en plus sur les modèles Dataflow.
- Consultez la liste des modèles fournis par Google.