Combien de temps faut-il pour exporter des données vers ClickHouse ?
| Table | Lignes | Fichiers exportés | Volume de données | Export BigQuery | Temps de slot | Import ClickHouse |
|---|---|---|---|---|---|---|
| blocks | 16,569,489 | 73 | 14.53GB | 23 s | 37 min | 15.4 s |
| transactions | 1,864,514,414 | 5169 | 957GB | 1 min 38 s | 1 jour 8 h | 18 min 5 s |
| traces | 6,325,819,306 | 17,985 | 2.896TB | 5 min 46 s | 5 jours 19 h | 34 min 55 s |
| contracts | 57,225,837 | 350 | 45.35GB | 16 s | 1 h 51 min | 39.4 s |
| Total | 8.26 milliards | 23,577 | 3.982TB | 8 min 3 s | > 6 jours 5 h | 53 min 45 s |
Exporter les données d’une table vers GCS
Dans cette étape, nous utilisons le workspace SQL de BigQuery pour exécuter nos commandes SQL. Ci-dessous, nous exportons une table BigQuery nomméemytable vers un bucket GCS à l’aide de l’instruction EXPORT DATA.* dans notre paramètre uri. Cela garantit que la sortie est répartie entre plusieurs fichiers, avec un suffixe numérique croissant, si l’exportation dépasse 1 Go de données.Cette approche présente plusieurs avantages :- Google permet d’exporter gratuitement jusqu’à 50 To par jour vers GCS. Les utilisateurs ne paient que le stockage dans GCS.
- Les exportations produisent automatiquement plusieurs fichiers, chacun étant limité à un maximum de 1 Go de données de table. C’est un avantage pour ClickHouse, car cela permet de paralléliser les importations.
- Parquet, en tant que format orienté colonnes, constitue un meilleur format d’échange, car il est nativement compressé et plus rapide à exporter pour BigQuery ainsi qu’à interroger pour ClickHouse
Importation de données dans ClickHouse depuis GCS
Une fois l’exportation terminée, nous pouvons importer ces données dans une table de ClickHouse. Vous pouvez utiliser la console SQL de ClickHouse ouclickhouse-client pour exécuter les commandes ci-dessous.Vous devez d’abord créer votre table dans ClickHouse :parallel_distributed_insert_select si votre cluster comporte plusieurs répliques ClickHouse, afin d’accélérer l’export. Si vous n’avez qu’un seul nœud ClickHouse, vous pouvez ignorer cette étape :INSERT INTO SELECT, qui insère des données dans une table à partir des résultats d’une requête SELECT.Pour récupérer les données à insérer, nous pouvons utiliser la fonction s3Cluster afin de récupérer les données depuis notre bucket GCS, puisque GCS est interopérable avec Amazon S3. Si vous n’avez qu’un seul nœud ClickHouse, vous pouvez utiliser la fonction de table S3 à la place de la fonction s3Cluster.ACCESS_ID et SECRET utilisés dans la requête ci-dessus correspondent à votre clé HMAC associée à votre bucket GCS.Utilisez
ifNull lors de l’exportation de colonnes NullableDans la requête ci-dessus, nous utilisons la fonction ifNull avec la colonne some_text pour insérer des données dans notre table ClickHouse en utilisant une valeur par défaut. Vous pouvez également définir vos colonnes dans ClickHouse comme Nullable, mais ce n’est pas recommandé, car cela peut nuire aux performances.Vous pouvez aussi définir SET input_format_null_as_default=1 et toutes les valeurs manquantes ou NULL seront remplacées par les valeurs par défaut de leurs colonnes respectives, si celles-ci sont spécifiées.Vérifier le bon export des données
Pour vérifier si vos données ont bien été insérées, exécutez simplement une requêteSELECT sur votre nouvelle table :