Amazon 고객 리뷰
이 데이터셋에는 Amazon 상품에 대한 1억 5천만 개가 넘는 고객 리뷰가 포함됩니다. 데이터는 총 49GB(압축 기준) 크기의 Snappy로 압축된 Parquet 파일 형태로 AWS S3에 저장되어 있습니다. 이제 이 데이터를 ClickHouse에 적재하는 절차를 단계별로 살펴봅니다.
참고
아래 쿼리들은 Production 환경의 ClickHouse Cloud 인스턴스에서 실행되었습니다. 자세한 내용은 "Playground 사양"을 참조하십시오.
데이터셋 로딩
- 데이터를 ClickHouse에 삽입하지 않고도 원본 위치에서 바로 쿼리할 수 있습니다. 몇 개의 행을 조회해서 어떤 데이터인지 살펴보겠습니다.
데이터 행은 다음과 같습니다:
- ClickHouse에 이 데이터를 저장할
amazon_reviews라는 이름의 새로운MergeTree테이블을 정의합니다:
- 다음
INSERT명령어는s3Cluster테이블 함수를 사용합니다. 이 함수는 클러스터의 모든 노드를 사용하여 여러 S3 파일을 병렬로 처리할 수 있게 해줍니다. 또한 와일드카드를 사용하여https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_*.snappy.parquet로 시작하는 모든 파일을 삽입합니다:
팁
ClickHouse Cloud에서는 클러스터 이름이 default입니다. default를 실제 클러스터 이름으로 변경하거나, 클러스터가 없다면 s3Cluster 대신 s3 테이블 함수(table function)를 사용하십시오.
- 해당 쿼리는 오래 걸리지 않으며, 초당 평균 약 300,000개의 행을 처리합니다. 약 5분 정도 지나면 모든 행이 삽입된 것을 확인할 수 있습니다:
- 이제 데이터가 얼마나 많은 공간을 차지하는지 확인해 보겠습니다:
원본 데이터는 약 70G였지만, ClickHouse에서 압축하면 약 30G 정도의 용량만 차지합니다.
예시 쿼리
- 이제 몇 가지 쿼리를 실행해 보겠습니다. 다음은 데이터셋에서 가장 유용한 리뷰 상위 10개입니다:
참고
이 쿼리는 성능 향상을 위해 프로젝션을 사용합니다.
- 다음은 Amazon에서 리뷰가 가장 많은 상위 10개 상품입니다.
- 다음은 각 제품의 월별 평균 리뷰 평점입니다(실제 Amazon 채용 면접 질문입니다!):
- 다음은 제품 카테고리별 총 투표 수입니다. 이 쿼리는
product_category가 기본 키에 포함되어 있어 빠르게 실행됩니다:
- 리뷰에서 **"awful"**이라는 단어가 가장 자주 등장하는 제품을 찾아봅니다. 이는 상당히 큰 작업으로, 단어 하나를 찾기 위해 1억 5,100만 개가 넘는 문자열을 파싱해야 합니다:
이처럼 방대한 양의 데이터에 대해 쿼리가 얼마나 빠르게 실행되는지 확인하십시오. 결과를 읽어 보는 것도 재미있습니다!
- 동일한 쿼리를 다시 실행할 수 있는데, 이번에는 리뷰에서 awesome 이라는 단어를 검색합니다.