| 입력 | 출력 | 별칭 |
|---|---|---|
| ✔ | ✔ |
설명
ArrowStream은 Apache Arrow의 “stream mode” 포맷입니다. 메모리 내 스트림 처리에 맞게 설계되었습니다.
사용 예시
forex 데이터셋을 사용합니다. 호스트 sql-clickhouse.clickhouse.com와
사용자 demo(비밀번호 없음)를 사용해 clickhouse-client로 원격 연결할 수 있습니다.
forex 테이블(table)은 forex 데이터베이스(database)에 있으므로, 이를 기본
데이터베이스로 선택합니다:
forex 테이블은 환율을 저장합니다. system.columns에 쿼리하여
크기와 디스크에서의 압축 효율을 확인할 수 있습니다:
Query
Response
Arrow “file mode” 포맷은 읽기 전에 전체 결과가 필요하지만, ArrowStream은
도착하는 대로 consumer가 점진적으로 읽을 수 있는
레코드 배치 시퀀스로 전달됩니다. 따라서 전체 데이터셋을 먼저 구체화하지 않고도
쿼리 결과를 시각화 도구나 analytics 도구로 바로 스트리밍하는 데
적합합니다.
결과를 스트리밍하려면 ClickHouse의 HTTP 인터페이스를 통해
POST 요청으로 쿼리를 보내고, 응답을 Arrow 스트림으로 읽으십시오. Arrow 출력의 압축은
output_format_arrow_compression_method
설정으로 비활성화하여 consumer가 수신하는 즉시
batch를 직접 디코딩할 수 있도록 합니다.
ArrowStream 출력은 원시 binary이므로
터미널에 출력하는 대신 consumer로 파이프합니다. 이 스트림은 self-describing 형식이므로(자체 스키마를 포함함),
여기서는 이를 바로
clickhouse-local로 파이프합니다. 이 도구는
--input-format ArrowStream으로 들어오는 batch를 읽고 이를 table로 쿼리합니다.
forex table은 크기가 크므로, 이 예시를 간결하게 유지하기 위해 원격 쿼리에 WHERE
프레디케이트와 LIMIT를 적용합니다:
Response
RecordBatchReader는 서버에서 스트리밍되는 즉시 각 레코드 배치를
반환합니다:
ArrowStream 데이터를
Perspective를 사용한 실시간 시각화로 스트리밍하는 전체 과정은
블로그 게시물
Streaming real-time visualizations with ClickHouse, Apache Arrow and Perspective에서 확인하십시오.
포맷 설정
ArrowStream는 Arrow 포맷과 동일한 포맷 설정을 사용합니다.
| Setting | Description | Default |
|---|---|---|
input_format_arrow_allow_missing_columns | Arrow 입력 형식을 읽을 때 누락된 컬럼을 허용합니다 | 1 |
input_format_arrow_case_insensitive_column_matching | Arrow 컬럼을 CH 컬럼과 일치시킬 때 대소문자를 구분하지 않습니다. | 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_date_as_uint16 | Date 값을 32비트 Arrow DATE32 타입(다시 읽으면 Date32)으로 변환하는 대신, 일반 16비트 숫자(다시 읽으면 UInt16)로 씁니다. | 0 |
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_unsupported_types_as_binary | 변환할 수 없는 타입을 원시 바이너리 데이터로 출력합니다. false이면 이러한 타입에서 UNKNOWN_TYPE 예외가 발생합니다. | 1 |
output_format_arrow_use_64_bit_indexes_for_dictionary | Arrow 포맷에서 딕셔너리 인덱스에 항상 64비트 정수를 사용합니다 | 0 |
output_format_arrow_use_signed_indexes_for_dictionary | Arrow 포맷에서 딕셔너리 인덱스에 부호 있는 정수를 사용합니다 | 1 |