설명
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 포맷과 동일한 포맷 설정을 사용합니다.