Apache ORC est un format de stockage colonnaire largement utilisé dans l’écosystème Hadoop.
Correspondance des types de données
Le tableau ci-dessous compare les types de données ORC pris en charge et les types de données ClickHouse correspondants dans les requêtes INSERT et SELECT.
Type de données ORC (INSERT) | Type de données ClickHouse | Type de données ORC (SELECT) |
|---|
Boolean | UInt8 | Boolean |
Tinyint | Int8/UInt8/Enum8 | Tinyint |
Smallint | Int16/UInt16/Enum16 | Smallint |
Int | Int32/UInt32 | Int |
Bigint | Int64/UInt32 | Bigint |
Float | Float32 | Float |
Double | Float64 | Double |
Decimal | Decimal | Decimal |
Date | Date32 | Date |
Timestamp | DateTime64 | Timestamp |
String, Char, Varchar, Binary | String | Binary |
List | Array | List |
Struct | Tuple | Struct |
Map | Map | Map |
Int | IPv4 | Int |
Binary | IPv6 | Binary |
Binary | Int128/UInt128/Int256/UInt256 | Binary |
Binary | Decimal256 | Binary |
- Les autres types ne sont pas pris en charge.
- Les tableaux peuvent être imbriqués et accepter comme argument une valeur de type
Nullable. Les types Tuple et Map peuvent également être imbriqués.
- Les types de données des colonnes d’une table ClickHouse n’ont pas besoin de correspondre aux champs de données ORC associés. Lors de l’insertion de données, ClickHouse interprète les types de données conformément au tableau ci-dessus, puis convertit les données dans le type de données défini pour la colonne de la table ClickHouse.
À l’aide d’un fichier ORC nommé football.orc et contenant les données suivantes :
┌───────date─┬─season─┬─home_team─────────────┬─away_team───────────┬─home_team_goals─┬─away_team_goals─┐
1. │ 2022-04-30 │ 2021 │ Sutton United │ Bradford City │ 1 │ 4 │
2. │ 2022-04-30 │ 2021 │ Swindon Town │ Barrow │ 2 │ 1 │
3. │ 2022-04-30 │ 2021 │ Tranmere Rovers │ Oldham Athletic │ 2 │ 0 │
4. │ 2022-05-02 │ 2021 │ Port Vale │ Newport County │ 1 │ 2 │
5. │ 2022-05-02 │ 2021 │ Salford City │ Mansfield Town │ 2 │ 2 │
6. │ 2022-05-07 │ 2021 │ Barrow │ Northampton Town │ 1 │ 3 │
7. │ 2022-05-07 │ 2021 │ Bradford City │ Carlisle United │ 2 │ 0 │
8. │ 2022-05-07 │ 2021 │ Bristol Rovers │ Scunthorpe United │ 7 │ 0 │
9. │ 2022-05-07 │ 2021 │ Exeter City │ Port Vale │ 0 │ 1 │
10. │ 2022-05-07 │ 2021 │ Harrogate Town A.F.C. │ Sutton United │ 0 │ 2 │
11. │ 2022-05-07 │ 2021 │ Hartlepool United │ Colchester United │ 0 │ 2 │
12. │ 2022-05-07 │ 2021 │ Leyton Orient │ Tranmere Rovers │ 0 │ 1 │
13. │ 2022-05-07 │ 2021 │ Mansfield Town │ Forest Green Rovers │ 2 │ 2 │
14. │ 2022-05-07 │ 2021 │ Newport County │ Rochdale │ 0 │ 2 │
15. │ 2022-05-07 │ 2021 │ Oldham Athletic │ Crawley Town │ 3 │ 3 │
16. │ 2022-05-07 │ 2021 │ Stevenage Borough │ Salford City │ 4 │ 2 │
17. │ 2022-05-07 │ 2021 │ Walsall │ Swindon Town │ 0 │ 3 │
└────────────┴────────┴───────────────────────┴─────────────────────┴─────────────────┴─────────────────┘
Insérez les données :
INSERT INTO football FROM INFILE 'football.orc' FORMAT ORC;
Lisez les données au format ORC :
SELECT *
FROM football
INTO OUTFILE 'football.orc'
FORMAT ORC
ORC est un format binaire qui ne s’affiche pas sous une forme lisible dans le terminal. Utilisez INTO OUTFILE pour écrire des fichiers ORC.
| Paramètre | Description | Par défaut |
|---|
output_format_arrow_string_as_string | Utiliser le type String d’Arrow au lieu de Binary pour les colonnes String. | false |
output_format_orc_compression_method | Méthode de compression utilisée pour le format ORC de sortie. Valeur par défaut | none |
input_format_arrow_case_insensitive_column_matching | Ignorer la casse lors de la correspondance entre les colonnes Arrow et ClickHouse. | false |
input_format_arrow_allow_missing_columns | Autoriser les colonnes manquantes lors de la lecture des données Arrow. | false |
input_format_arrow_skip_columns_with_unsupported_types_in_schema_inference | Autoriser l’omission des colonnes ayant des types non pris en charge lors de l’inférence du schéma pour le format Arrow. | false |
Pour échanger des données avec Hadoop, vous pouvez utiliser le moteur de table HDFS.