Apache ORC es un formato de almacenamiento columnar ampliamente utilizado en el ecosistema de Hadoop.
Correspondencia de tipos de datos
La siguiente tabla compara los tipos de datos ORC compatibles y sus correspondientes tipos de datos de ClickHouse en las consultas INSERT y SELECT.
Tipo de dato ORC (INSERT) | Tipo de dato de ClickHouse | Tipo de dato 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 |
- Los demás tipos no son compatibles.
- Los arrays pueden anidarse y pueden tener un valor de tipo
Nullable como argumento. Los tipos Tuple y Map también pueden anidarse.
- Los tipos de datos de las columnas de una tabla de ClickHouse no tienen por qué coincidir con los campos de datos ORC correspondientes. Al insertar datos, ClickHouse interpreta los tipos de datos según la tabla anterior y luego convierte los datos al tipo de dato definido para la columna de la tabla de ClickHouse.
Usa un archivo ORC con los siguientes datos, llamado football.orc:
┌───────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 │
└────────────┴────────┴───────────────────────┴─────────────────────┴─────────────────┴─────────────────┘
Inserte los datos:
INSERT INTO football FROM INFILE 'football.orc' FORMAT ORC;
Lea los datos en formato ORC:
SELECT *
FROM football
INTO OUTFILE 'football.orc'
FORMAT ORC
ORC es un formato binario que no puede mostrarse en la terminal de forma legible para humanos. Use INTO OUTFILE para generar archivos ORC.
| Configuración | Descripción | Predeterminado |
|---|
output_format_arrow_string_as_string | Usar el tipo String de Arrow en lugar de Binary para las columnas String. | false |
output_format_orc_compression_method | Método de compresión usado para el formato ORC de salida. Valor predeterminado | none |
input_format_arrow_case_insensitive_column_matching | Ignorar mayúsculas y minúsculas al hacer coincidir las columnas de Arrow con las columnas de ClickHouse. | false |
input_format_arrow_allow_missing_columns | Permitir columnas ausentes al leer datos Arrow. | false |
input_format_arrow_skip_columns_with_unsupported_types_in_schema_inference | Permitir omitir columnas con tipos no compatibles durante la inferencia de esquema del formato Arrow. | false |
Para intercambiar datos con Hadoop, puede usar el motor de tablas HDFS.