Arrow
| 입력 | 출력 | 별칭 |
|---|---|---|
| ✔ | ✔ |
설명
Apache Arrow에는 기본 제공되는 두 가지 열 지향 저장 형식이 있습니다. ClickHouse는 이 형식들에 대한 읽기 및 쓰기 작업을 지원합니다.
Arrow는 Apache Arrow의 「file mode」 형식입니다. 이 형식은 메모리에서의 임의 접근을 위해 설계되었습니다.
데이터 타입 매칭
아래 표는 지원되는 데이터 타입과 INSERT 및 SELECT 쿼리에서 ClickHouse 데이터 타입과의 매핑을 보여줍니다.
Arrow data type (INSERT) | ClickHouse data type | Arrow data type (SELECT) |
|---|---|---|
BOOL | Bool | BOOL |
UINT8, BOOL | UInt8 | UINT8 |
INT8 | Int8/Enum8 | INT8 |
UINT16 | UInt16 | UINT16 |
INT16 | Int16/Enum16 | INT16 |
UINT32 | UInt32 | UINT32 |
INT32 | Int32 | INT32 |
UINT64 | UInt64 | UINT64 |
INT64 | Int64 | INT64 |
FLOAT, HALF_FLOAT | Float32 | FLOAT32 |
DOUBLE | Float64 | FLOAT64 |
DATE32 | Date32 | UINT16 |
DATE64 | DateTime | UINT32 |
TIMESTAMP, TIME32, TIME64 | DateTime64 | TIMESTAMP |
STRING, BINARY | String | BINARY |
STRING, BINARY, FIXED_SIZE_BINARY | FixedString | FIXED_SIZE_BINARY |
DECIMAL | Decimal | DECIMAL |
DECIMAL256 | Decimal256 | DECIMAL256 |
LIST | Array | LIST |
STRUCT | Tuple | STRUCT |
MAP | Map | MAP |
UINT32 | IPv4 | UINT32 |
FIXED_SIZE_BINARY, BINARY | IPv6 | FIXED_SIZE_BINARY |
FIXED_SIZE_BINARY, BINARY | Int128/UInt128/Int256/UInt256 | FIXED_SIZE_BINARY |
Array 타입은 중첩될 수 있으며, 인자로 Nullable 타입 값을 가질 수 있습니다. Tuple 및 Map 타입도 중첩될 수 있습니다.
DICTIONARY 타입은 INSERT 쿼리에서 지원됩니다. SELECT 쿼리의 경우 output_format_arrow_low_cardinality_as_dictionary 설정을 사용하면 LowCardinality 타입을 DICTIONARY 타입으로 출력할 수 있습니다. LowCardinality 딕셔너리에는 사용되지 않는 값이 포함될 수 있으며, 이로 인해 출력 시 Arrow DICTIONARY에도 사용되지 않는 값이 포함될 수 있습니다.
지원되지 않는 Arrow 데이터 타입:
FIXED_SIZE_BINARYJSONUUIDENUM.
ClickHouse 테이블 컬럼의 데이터 타입은 해당 Arrow 데이터 필드와 일치할 필요가 없습니다. 데이터를 삽입할 때 ClickHouse는 위 표에 따라 데이터 타입을 해석한 다음, 데이터를 ClickHouse 테이블 컬럼에 지정된 데이터 타입으로 캐스팅합니다.
사용 예
데이터 삽입
다음 명령을 사용하여 파일에 저장된 Arrow 데이터를 ClickHouse 테이블에 삽입할 수 있습니다:
데이터 선택
다음 명령어를 사용하여 ClickHouse 테이블에서 데이터를 조회하여 Arrow 형식의 파일로 저장할 수 있습니다:
Format settings
| Setting | Description | Default |
|---|---|---|
input_format_arrow_allow_missing_columns | Arrow 입력 포맷을 읽을 때 일부 컬럼이 없어도 허용합니다. | 1 |
input_format_arrow_case_insensitive_column_matching | Arrow 컬럼을 ClickHouse 컬럼과 매칭할 때 대소문자를 구분하지 않습니다. | 0 |
input_format_arrow_import_nested | 더 이상 사용되지 않는 설정이며, 아무 작업도 수행하지 않습니다. | 0 |
input_format_arrow_skip_columns_with_unsupported_types_in_schema_inference | Arrow 포맷에 대해 스키마 추론을 수행할 때 지원되지 않는 타입의 컬럼은 건너뜁니다. | 0 |
output_format_arrow_compression_method | Arrow 출력 포맷에 사용할 압축 방식입니다. 지원되는 코덱: lz4_frame, zstd, none(비압축) | lz4_frame |
output_format_arrow_fixed_string_as_fixed_byte_array | FixedString 컬럼에 대해 Binary 대신 Arrow FIXED_SIZE_BINARY 타입을 사용합니다. | 1 |
output_format_arrow_low_cardinality_as_dictionary | LowCardinality 타입을 Dictionary Arrow 타입으로 출력하도록 활성화합니다. | 0 |
output_format_arrow_string_as_string | String 컬럼에 대해 Binary 대신 Arrow String 타입을 사용합니다. | 1 |
output_format_arrow_use_64_bit_indexes_for_dictionary | Arrow 포맷에서 딕셔너리 인덱스에 항상 64비트 정수를 사용합니다. | 0 |
output_format_arrow_use_signed_indexes_for_dictionary | Arrow 포맷에서 딕셔너리 인덱스에 부호 있는 정수를 사용합니다. | 1 |