Перейти к основному содержимому
Перейти к основному содержимому

ORC

InputOutputAlias

Описание

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

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

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

Тип данных ORC (INSERT)Тип данных ClickHouseТип данных ORC (SELECT)
BooleanUInt8Boolean
TinyintInt8/UInt8/Enum8Tinyint
SmallintInt16/UInt16/Enum16Smallint
IntInt32/UInt32Int
BigintInt64/UInt32Bigint
FloatFloat32Float
DoubleFloat64Double
DecimalDecimalDecimal
DateDate32Date
TimestampDateTime64Timestamp
String, Char, Varchar, BinaryStringBinary
ListArrayList
StructTupleStruct
MapMapMap
IntIPv4Int
BinaryIPv6Binary
BinaryInt128/UInt128/Int256/UInt256Binary
BinaryDecimal256Binary
  • Другие типы не поддерживаются.
  • Массивы могут быть вложенными и могут иметь значение типа 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
подсказка

ORC - это бинарный формат, который не отображается в читаемом человекообразном виде в терминале. Используйте INTO OUTFILE, чтобы выводить файлы ORC.

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

НастройкаОписаниеПо умолчанию
output_format_arrow_string_as_stringИспользовать тип Arrow String вместо Binary для строковых колонок.false
output_format_orc_compression_methodМетод сжатия, используемый в выходном формате ORC. Значение по умолчаниюnone
input_format_arrow_case_insensitive_column_matchingИгнорировать регистр при сопоставлении колонок Arrow с колонками ClickHouse.false
input_format_arrow_allow_missing_columnsРазрешить отсутствие колонок при чтении данных Arrow.false
input_format_arrow_skip_columns_with_unsupported_types_in_schema_inferenceРазрешить пропуск колонок с неподдерживаемыми типами при выводе схемы для формата Arrow.false

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