Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

ORC

Ввод Вывод Псевдоним

Описание

Apache ORC — это столбцовый формат хранения данных, широко используемый в экосистеме Hadoop.

Сопоставление типов данных

В таблице ниже приведено сравнение поддерживаемых типов данных ORC и соответствующих им типов данных ClickHouse в запросах INSERT и SELECT.

Тип данных ORC (INSERT) Тип данных ClickHouse Тип данных ORC (SELECT)
Boolean Bool Boolean
Tinyint Int8/UInt8/Enum8 Tinyint
Smallint Int16/UInt16/Enum16 Smallint
Int Int32/UInt32 Int
Bigint Int64/UInt64 Bigint
Float Float32 Float
Double Float64 Double
Decimal Decimal Decimal
Date Date32 Date
Timestamp DateTime64 Timestamp
String, Varchar, Binary String String
Char FixedString String
List Array List
Struct Tuple Struct
Map Map Map
Int IPv4 Int
Binary IPv6 Binary
Binary Int128/UInt128/Int256/UInt256 Binary
Binary Decimal256 Binary
Union Variant Union
  • Другие типы не поддерживаются.
  • Столбец ORC Union считывается как Variant с типами ветвей объединения, а столбец Variant записывается как ORC Union с его типами ветвей. Обратите внимание, что Variant сортирует типы ветвей, поэтому порядок ветвей может отличаться от порядка в ORC-файле. Объединения с повторяющимися типами ветвей (например, uniontype<int,int>) не поддерживаются.
  • Массивы могут быть вложенными и принимать в качестве аргумента значение типа Nullable. Типы Tuple и Map также могут быть вложенными.
  • Типы данных столбцов таблицы ClickHouse не обязаны совпадать с соответствующими полями данных ORC. При вставке данных ClickHouse интерпретирует типы данных в соответствии с таблицей выше, а затем преобразует данные к типу, заданному для столбца таблицы ClickHouse.

Пример использования

Вставка данных

Используя ORC-файл со следующими данными, названный 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 │
    └────────────┴────────┴───────────────────────┴─────────────────────┴─────────────────┴─────────────────┘

Вставьте данные:

INSERT INTO football FROM INFILE 'football.orc' FORMAT ORC;

Чтение данных

Для чтения данных используйте формат ORC:

SELECT *
FROM football
INTO OUTFILE 'football.orc'
FORMAT ORC

Настройки формата

Настройка Описание По умолчанию
output_format_orc_string_as_string Использовать тип ORC String вместо Binary для столбцов String. true
output_format_orc_compression_method Метод сжатия, используемый для выходного формата ORC. Значение по умолчанию zstd
input_format_orc_case_insensitive_column_matching Игнорировать регистр при сопоставлении столбцов ORC со столбцами ClickHouse. false
input_format_orc_allow_missing_columns Разрешить отсутствующие столбцы при чтении данных ORC. true
input_format_orc_skip_columns_with_unsupported_types_in_schema_inference Разрешить пропускать столбцы с неподдерживаемыми типами при автоматическом определении схемы для формата ORC. false

Для обмена данными с Hadoop можно использовать движок таблицы HDFS.

Navigation