Parquet est un format de fichier efficace pour stocker les données au format colonnaire.
ClickHouse prend en charge aussi bien la lecture que l’écriture de fichiers Parquet.
Lorsque vous indiquez un chemin de fichier dans une requête, l’emplacement depuis lequel ClickHouse tentera de lire dépend de la version de ClickHouse que vous utilisez.Si vous utilisez clickhouse-local, il lira depuis un emplacement relatif au répertoire depuis lequel vous avez lancé ClickHouse Local.
Si vous utilisez ClickHouse Server ou ClickHouse Cloud via clickhouse client, il lira depuis un emplacement relatif au répertoire /var/lib/clickhouse/user_files/ sur le serveur.
Importation à partir de Parquet
Avant de charger les données, nous pouvons utiliser la fonction file() pour examiner la structure d’un fichier Parquet d’exemple :
Nous avons utilisé Parquet comme deuxième argument, afin que ClickHouse reconnaisse le format du fichier. Cela affichera les colonnes avec leur type :
Nous pouvons également inspecter des fichiers avant d’importer réellement des données, grâce à toute la puissance de SQL :
Il est possible d’omettre la définition explicite du format pour file() et INFILE/OUTFILE.
Dans ce cas, ClickHouse détectera automatiquement le format à partir de l’extension du fichier.
Importer dans une table existante
Créons une table dans laquelle nous importerons des données Parquet :
Nous pouvons maintenant importer des données à l’aide de la clause FROM INFILE :
Notez que ClickHouse a automatiquement converti les chaînes Parquet (dans la colonne date) en type Date. Cela s’explique par le fait que ClickHouse effectue automatiquement une conversion de type en fonction des types de la table cible.
Insérer un fichier local dans un serveur distant
Si vous souhaitez insérer un fichier Parquet local dans un serveur ClickHouse distant, vous pouvez le faire en acheminant le contenu du fichier vers clickhouse-client, comme illustré ci-dessous :
Création de nouvelles tables à partir de fichiers Parquet
Comme ClickHouse lit le schéma d’un fichier Parquet, nous pouvons créer des tables à la volée :
Cela créera automatiquement une table et la peuplera à partir d’un fichier Parquet spécifié :
Par défaut, ClickHouse applique strictement les noms de colonnes, les types et les valeurs. Mais il est parfois possible d’ignorer des colonnes inexistantes ou des valeurs non prises en charge lors de l’importation. Cela peut être configuré avec les paramètres Parquet.
Lorsque vous utilisez INTO OUTFILE avec ClickHouse Cloud, vous devez exécuter les commandes dans clickhouse client sur la machine où le fichier sera écrit.
Pour exporter n’importe quelle table ou tout résultat de la requête vers un fichier Parquet, nous pouvons utiliser une clause INTO OUTFILE :
Cela créera le fichier export.parquet dans le répertoire de travail.
Types de données ClickHouse et Parquet
Les types de données ClickHouse et Parquet sont en grande partie identiques, mais présentent tout de même quelques différences. Par exemple, ClickHouse exporte le type DateTime sous la forme d’un int64 Parquet. Si nous le réimportons ensuite dans ClickHouse, nous verrons des nombres (fichier time.parquet) :
Dans ce cas, on peut utiliser la conversion de type :
ClickHouse prend en charge de nombreux formats, aussi bien textuels que binaires, afin de couvrir divers scénarios et plateformes. Découvrez d’autres formats et différentes façons de les utiliser dans les articles suivants :
Consultez également clickhouse-local - un outil portable complet pour travailler sur des fichiers locaux/distants sans avoir besoin d’un ClickHouse server.