Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

ORC

입력 출력 별칭

설명

Apache ORCHadoop 생태계에서 널리 사용되는 열 지향 스토리지 포맷입니다.

데이터 타입 매핑

아래 표는 INSERTSELECT 쿼리에서 지원되는 ORC 데이터 타입과, 이에 대응하는 ClickHouse 데이터 타입을 비교합니다.

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 컬럼은 Union의 브랜치 타입을 포함하는 Variant로 읽히며, Variant 컬럼은 브랜치 타입을 포함하는 ORC Union으로 작성됩니다. Variant는 브랜치 타입을 정렬하므로 브랜치 순서가 ORC 파일과 다를 수 있습니다. 중복된 브랜치 타입이 있는 Union(예: uniontype<int,int>)은 지원되지 않습니다.
  • 배열은 중첩할 수 있으며, 인수로 Nullable 타입 값을 사용할 수 있습니다. TupleMap 타입도 중첩할 수 있습니다.
  • ClickHouse 테이블 컬럼의 데이터 타입은 해당 ORC 데이터 필드와 일치할 필요가 없습니다. 데이터를 삽입할 때 ClickHouse는 위 표에 따라 데이터 타입을 해석한 다음, 이를 ClickHouse 테이블 컬럼에 설정된 데이터 타입으로 형 변환합니다.

사용 예시

데이터 삽입

다음 데이터가 들어 있는 football.orc라는 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 String 컬럼에 Binary 대신 ORC 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