Modèle BigQuery vers Clickhouse

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écifier inputTableSpec ou query. Si vous définissez les deux paramètres, le modèle utilise le paramètre query. 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 si useLegacySql est true. Vous devez spécifier inputTableSpec ou query. Si vous définissez les deux paramètres, le modèle utilise le paramètre query. 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è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. 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

  1. Accédez à la page Dataflow Créer un job à partir d'un modèle.
  2. Accéder à la page Créer un job à partir d'un modèle
  3. Dans le champ Nom du job, saisissez un nom de job unique.
  4. 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.

  5. Dans le menu déroulant Modèle Dataflow, sélectionnez the BigQuery to Clickhouse template.
  6. Dans les champs fournis, saisissez vos valeurs de paramètres.
  7. 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 Dataflow
  • JOB_NAME : nom de job unique de votre choix
  • REGION_NAME : région dans laquelle vous souhaitez déployer votre job Dataflow, par exemple us-central1
  • VERSION : version du modèle que vous souhaitez utiliser

    Vous pouvez utiliser les valeurs suivantes :

  • 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 Dataflow
  • JOB_NAME : nom de job unique de votre choix
  • LOCATION : région dans laquelle vous souhaitez déployer votre job Dataflow, par exemple us-central1
  • VERSION : version du modèle que vous souhaitez utiliser

    Vous pouvez utiliser les valeurs suivantes :

  • JDBC_URL : votre URL JDBC.
  • CLICKHOUSE_USERNAME : votre nom d'utilisateur Clickhouse.
  • CLICKHOUSE_TABLE : votre table Clickhouse.

Étapes suivantes