Apache a publié plusieurs formats de données largement utilisés dans les environnements analytiques, notamment les populaires Avro, Arrow et Orc. ClickHouse prend en charge l’importation et l’exportation de données à l’aide de n’importe lequel de ces formats.
Import et export au format Avro
ClickHouse prend en charge la lecture et l’écriture de fichiers de données Apache Avro, largement utilisés dans les systèmes Hadoop.
Pour importer à partir d’un fichier Avro, il faut utiliser le format Avro dans l’instruction INSERT :
INSERT INTO sometable
FROM INFILE 'data.avro'
FORMAT AvroAvec la fonction file(), nous pouvons également examiner des fichiers Avro avant d’importer réellement des données :
SELECT path, hits
FROM file('data.avro', Avro)
ORDER BY hits DESC
LIMIT 5;┌─path────────────┬──hits─┐
│ Amy_Poehler │ 62732 │
│ Adam_Goldberg │ 42338 │
│ Aaron_Spelling │ 25128 │
│ Absence_seizure │ 18152 │
│ Ammon_Bundy │ 11890 │
└─────────────────┴───────┘Pour exporter dans un fichier Avro :
SELECT * FROM sometable
INTO OUTFILE 'export.avro'
FORMAT Avro;Avro et les types de données de ClickHouse
Tenez compte de la correspondance des types de données lors de l’importation ou de l’exportation de fichiers Avro. Utilisez un transtypage explicite pour convertir les données lors du chargement de fichiers Avro :
SELECT
date,
toDate(date)
FROM file('data.avro', Avro)
LIMIT 3;┌──date─┬─toDate(date)─┐
│ 16556 │ 2015-05-01 │
│ 16556 │ 2015-05-01 │
│ 16556 │ 2015-05-01 │
└───────┴──────────────┘Messages Avro dans Kafka
Lorsque les messages Kafka utilisent le format Avro, ClickHouse peut lire ces flux à l’aide du format AvroConfluent et du moteur Kafka :
CREATE TABLE some_topic_stream
(
field1 UInt32,
field2 String
)
ENGINE = Kafka() SETTINGS
kafka_broker_list = 'localhost',
kafka_topic_list = 'some_topic',
kafka_group_name = 'some_group',
kafka_format = 'AvroConfluent';Utiliser le format Arrow
Un autre format colonnaire est Apache Arrow, également pris en charge par ClickHouse pour l’importation et l’exportation. Pour importer des données à partir d’un fichier Arrow, nous utilisons le format Arrow :
INSERT INTO sometable
FROM INFILE 'data.arrow'
FORMAT ArrowL’exportation vers un fichier Arrow s’effectue de la même manière :
SELECT * FROM sometable
INTO OUTFILE 'export.arrow'
FORMAT ArrowConsultez également la correspondance des types de données pour voir si certains doivent être convertis manuellement.
Flux de données Arrow
Le format ArrowStream permet de travailler avec des flux Arrow (utilisés pour le traitement en mémoire). ClickHouse peut lire et écrire des flux Arrow.
Pour montrer comment ClickHouse peut transmettre des données Arrow en flux, envoyons-les au script Python suivant (il lit le flux d’entrée au format flux Arrow et affiche le résultat sous forme de tableau Pandas) :
import sys, pyarrow as pa
with pa.ipc.open_stream(sys.stdin.buffer) as reader:
print(reader.read_pandas())Nous pouvons maintenant récupérer les données de ClickHouse en redirigeant sa sortie vers le script :
clickhouse-client -q "SELECT path, hits FROM some_data LIMIT 3 FORMAT ArrowStream" | python3 arrow.py path hits
0 b'Akiba_Hebrew_Academy' 241
1 b'Aegithina_tiphia' 34
2 b'1971-72_Utah_Stars_season' 1ClickHouse peut aussi lire des flux Arrow en utilisant le même format ArrowStream :
arrow-stream | clickhouse-client -q "INSERT INTO sometable FORMAT ArrowStream"Nous avons utilisé arrow-stream comme source possible de données en flux Arrow au format Arrow.
Importation et exportation de données ORC
Le format Apache ORC est un format de stockage en colonnes généralement utilisé avec Hadoop. ClickHouse prend en charge l’importation comme l’exportation de données ORC à l’aide du format ORC :
SELECT *
FROM sometable
INTO OUTFILE 'data.orc'
FORMAT ORC;
INSERT INTO sometable
FROM INFILE 'data.orc'
FORMAT ORC;Consultez également la correspondance des types de données ainsi que les paramètres supplémentaires pour affiner l’exportation et l’importation.
Pour aller plus loin
ClickHouse prend en charge de nombreux formats, textuels comme binaires, afin de répondre à 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 riche en fonctionnalités pour travailler avec des fichiers locaux ou distants sans avoir besoin d'un serveur ClickHouse.