이 튜토리얼에서는 CSV 및 Parquet 포맷의 Hacker News 데이터 2,800만 행을 ClickHouse 테이블에 삽입하고, 몇 가지 간단한 쿼리를 실행해 데이터를 살펴봅니다.
CSV
1
2
데이터 샘플링
clickhouse-local을 사용하면
ClickHouse 서버를 배포하거나 구성하지 않고도 로컬 파일을 빠르게 처리할 수 있습니다.ClickHouse에 데이터를 저장하기 전에 clickhouse-local로 파일을 샘플링해 보겠습니다.
콘솔에서 다음을 실행하십시오:Query
Response
file 연산자를 사용하면 포맷으로 CSVWithNames만 지정하여 로컬 디스크의 파일을 읽을 수 있습니다.
가장 중요한 점은 파일 내용에서 스키마가 자동으로 추론된다는 것입니다.
또한 clickhouse-local이 확장자를 바탕으로 gzip 포맷을 추론해 압축된 파일을 읽을 수 있다는 점에도 주목하십시오.
Vertical 포맷을 사용하면 각 컬럼의 데이터를 더 쉽게 확인할 수 있습니다.3
스키마 추론으로 데이터 로드하기
데이터를 로드하는 가장 간단하면서도 강력한 도구는clickhouse-client입니다. 기능이 풍부한 네이티브 command-line client입니다.
데이터를 로드할 때도 스키마 추론을 활용할 수 있으며, 컬럼의 타입은 ClickHouse가 결정합니다.url 함수를 통해 원격 CSV 파일의 내용에 접근하여 테이블을 생성하고 데이터를 직접 삽입하려면, 다음 명령을 실행하세요.
스키마는 자동으로 추론됩니다:DESCRIBE TABLE 명령을 사용하면 할당된 타입을 확인할 수 있습니다.Query
Response
INSERT INTO, SELECT 명령을 사용하십시오.
url 함수와 함께 사용하면 URL에서 데이터를 직접 스트리밍할 수 있습니다:4
데이터 탐색하기
다음 쿼리를 실행하여 Hacker News 스토리와 특정 컬럼의 샘플을 확인합니다:Query
Response
5
스키마 정의
가장 명확하면서도 바로 적용할 수 있는 최적화 방법은 각 필드의 타입을 정의하는 것입니다. 시간 필드를DateTime 타입으로 선언하는 것과 함께, 기존 데이터셋을 삭제한 뒤 아래 각 필드에도 적절한 타입을 지정합니다.
ClickHouse에서는 데이터의 프라이머리 키 ID를 ORDER BY 절로 정의합니다.적절한 타입을 선택하고 ORDER BY
절에 포함할 컬럼을 결정하면 쿼리 속도와 압축 효율을 높이는 데 도움이 됩니다.아래 쿼리를 실행하여 기존 스키마를 삭제하고 개선된 스키마를 생성하세요:Query
clickhouse-client를 사용해, 명시적으로 INSERT INTO를 지정하고 INFILE 절로 파일의 데이터를 삽입합니다.Query
6
샘플 쿼리 실행
아래에 몇 가지 샘플 쿼리를 제공합니다. 직접 쿼리를 작성할 때 참고하시기 바랍니다.Hacker News에서 “ClickHouse”는 얼마나 자주 언급되는 주제입니까?
score 필드는 스토리의 인기도를 나타내는 메트릭을 제공하며,id 필드와 || 연결 연산자를 활용하면 원본 게시물의 링크를 생성할 수 있습니다.Query
Response
time 필드를 DateTime으로 정의하는 것의 유용성을 확인할 수 있습니다. 적절한 데이터 타입을 사용하면 toYYYYMM() 함수를 활용할 수 있습니다:Query
Response
ClickHouse 관련 기사에서 댓글을 가장 많이 작성한 사용자는 누구인가요?
Query
Response
어떤 댓글이 가장 많은 관심을 받습니까?
Query
Response
Parquet
1
데이터를 삽입합니다
다시url 함수를 사용해 원격 데이터를 읽고, 다음 쿼리를 실행하여 동일한 데이터를 Parquet 포맷으로 읽습니다:Parquet의 NULL 키Parquet 포맷의 특성상, 데이터에 실제로 없더라도
키가
NULL일 수 있음을 감안해야 합니다.Response
2
쿼리 속도를 높이기 위한 스키핑 인덱스 추가
“ClickHouse”를 언급한 댓글이 몇 개인지 확인하려면 다음 쿼리를 실행하세요:Query
Response
system.data_skipping_indices를 사용하십시오).인덱스가 생성되면 쿼리를 다시 실행하십시오:Query
Response
EXPLAIN 절을 사용하면 이 인덱스를 추가했을 때 쿼리 성능이 약 3.4배 향상된 이유를 이해할 수 있습니다.Response
Query
Response
Query
Response