Importez des données depuis Object Storage Service (OSS) vers Alibaba Cloud ClickHouse à l'aide d'un moteur de table ou d'une fonction de table pour interroger, analyser et traiter les journaux.
Prérequis
Activez Object Storage Service (OSS). Pour plus d'informations, consultez la rubrique Activer OSS.
Un bucket a été créé dans la même région que Alibaba Cloud ClickHouse. Pour savoir comment créer un bucket, consultez la rubrique Créer un bucket.
Le compte utilisé pour accéder à OSS dispose d'autorisations de lecture sur les objets du bucket. Pour plus d'informations, consultez la rubrique Vue d'ensemble.
Préparation des données
Enregistrez les données de test suivantes sous le nom test.csv et téléchargez-les sur OSS. Le séparateur de colonne par défaut est une virgule (,). Pour obtenir des instructions de téléchargement, consultez la rubrique Télécharger des fichiers.
1,yang,32,shanghai,http://example1.com
2,wang,22,beijing,http://example2.com
3,xiao,23,shenzhen,http://example3.com
4,jess,45,hangzhou,http://example4.com
5,jack,14,shanghai,http://example5.com
6,tomy,25,hangzhou,http://example6.com
7,lucy,45,shanghai,http://example7.com
8,tengyin,26,shanghai,http://example8.com
9,wangli,27,shenzhen,http://example9.com
10,xiaohua,37,shanghai,http://example10.com
Étapes
Connectez-vous au cluster Alibaba Cloud ClickHouse. Pour plus d'informations, consultez la rubrique Se connecter à un cluster.
-
Créez une table locale nommée
oss_test_tbl_local.ImportantLe schéma de la table Alibaba Cloud ClickHouse doit correspondre au schéma de la table externe OSS et au format des données présentes dans OSS. Traitez soigneusement les champs nuls afin d'éviter les échecs d'analyse et les exceptions au niveau du cluster.
Sélectionnez l'instruction CREATE TABLE appropriée en fonction de la configuration des réplicas de votre cluster. Vous pouvez consulter la configuration des réplicas sur la page Cluster Information dans la section Cluster Properties de la console.
Choisissez un moteur de table selon vos besoins métier. Pour plus d'informations, consultez la rubrique Moteurs de table.
Single-replica edition
CREATE TABLE oss_test_tbl_local ON CLUSTER default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = MergeTree() ORDER BY id;Double-replica edition
CREATE TABLE oss_test_tbl_local ON CLUSTER default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}') ORDER BY id; -
(Facultatif) Créez une table distribuée nommée
oss_test_tbl_distributed.RemarqueCréez une table distribuée si vous souhaitez répartir les données sur toutes les tables locales du cluster.
CREATE TABLE oss_test_tbl_distributed ON CLUSTER default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = Distributed(default, default, oss_test_tbl_local, rand()); -
Importez les données depuis OSS vers Alibaba Cloud ClickHouse.
Alibaba Cloud ClickHouse prend en charge deux méthodes pour importer des données depuis OSS : les moteurs de table et les fonctions de table.
ImportantSélectionnez l'instruction appropriée en fonction de la version de votre cluster. Vous pouvez consulter la version sur la page Cluster Information dans la section Cluster Properties de la console.
Méthode 1 : Utiliser un moteur de table
Méthode 2 : Utiliser une fonction de table
-
Interrogez la table distribuée
oss_test_tbl_distributedpour vérifier l'importation des données.SELECT * FROM oss_test_tbl_distributed;Résultat attendu :
┌─id─┬─user_name─┬──age──┬───city─────┬─────access_url────────┐ │ 1 │ yang │ 32 │ shanghai │ http://example1.com │ │ 2 │ wang │ 22 │ beijing │ http://example2.com │ │ 3 │ xiao │ 23 │ shenzhen │ http://example3.com │ │ 4 │ jess │ 45 │ hangzhou │ http://example4.com │ │ 5 │ jack │ 14 │ shanghai │ http://example5.com │ │ 6 │ tomy │ 25 │ hangzhou │ http://example6.com │ │ 7 │ lucy │ 45 │ shanghai │ http://example7.com │ │ 8 │ tengyin │ 26 │ shanghai │ http://example8.com │ │ 9 │ wangli │ 27 │ shenzhen │ http://example9.com │ │ 10 │ xiaohua │ 37 │ shanghai │ http://example10.com │ └────┴───────────┴───────┴────────────┴───────────────────────┘
Correspondance par caractère générique pour les chemins de stockage OSS
Pour simplifier l'analyse de plusieurs petits fichiers partageant une convention de nommage, le paramètre oss-file-path prend en charge les caractères génériques suivants :
*: Correspond à tout nom de fichier ou de répertoire. Par exemple,/dir/*correspond à tous les fichiers du répertoire/dir.{x,y,z}: Correspond à toute valeur incluse entre les accolades. Par exemple,file_{x,y,z}correspond àfile_x,file_youfile_z.{num1..num2}: Correspond à toute valeur dans la plage étendue denum1ànum2. Par exemple,file_{1..3}correspond àfile_1,file_2etfile_3.?: Correspond à un seul caractère quelconque. Par exemple,file_?correspond àfile_a,file_b,file_c, etc.
Exemple
Les fichiers téléchargés utilisent la structure de répertoire suivante.
oss://testBucketName/
doc-data/
oss-import/
small_files/
access_log_csv_1.txt
access_log_csv_2.txt
access_log_csv_3.txt
Exemples :
oss://testBucketName/doc-data/oss-import/small_files/*
oss://testBucketName/doc-data/oss-import/small_files/access*
oss://testBucketName/doc-data/oss-import/small_files/access_log_csv_{1,2,3}.txt
oss://testBucketName/doc-data/oss-import/*/access_log_csv_{1,2,3}.txt
oss://testBucketName/doc-data/oss-import//
oss://testBucketName/doc-data/oss-import/*/access_log_csv_{1..3}.txt
oss://testBucketName/doc-data/oss-import/*/access_log_csv_?.txt