Amazon カスタマーレビュー
このデータセットには、Amazon 商品に対する1億5,000万件以上のカスタマーレビューが含まれています。データは AWS S3 上の snappy で圧縮された Parquet ファイルとして提供されており、圧縮後の合計サイズは 49GB です。これを ClickHouse に取り込む手順を順を追って確認していきます。
注記
以下のクエリは、Production 環境の ClickHouse Cloud インスタンス上で実行されています。詳細については "Playground specifications" を参照してください。
データセットの読み込み
- データを 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 テーブル関数を使用してください。
- このクエリはそれほど時間がかからず、平均で毎秒約 300,000 行を処理します。およそ 5 分以内に、すべての行が挿入されていることを確認できるはずです。
- データがどれくらいの容量を使用しているか確認しましょう。
元のデータは約 70G ありましたが、ClickHouse で圧縮されると約 30G に収まります。
クエリ例
- クエリをいくつか実行してみましょう。こちらは、このデータセットで最も役に立ったレビューの上位 10 件です。
注記
このクエリは、パフォーマンスを向上させるために projection を使用しています。
- Amazon でレビュー数が最も多い商品のトップ 10 は次のとおりです。
- 各商品の月ごとの平均レビュー評価は次のとおりです(実際のAmazonの採用面接で出題された質問!):
- 各商品カテゴリごとの投票総数は次のとおりです。
product_categoryが主キーに含まれているため、このクエリは高速です。
- レビューの中で単語 "awful" が最も頻繁に出現している商品を探します。これは大規模な処理で、単一の単語を探すために 1 億 5,100 万以上の文字列をパースする必要があります。
このような大量のデータに対するクエリ時間に注目してください。結果も読んでみるとなかなか楽しいはずです。
- 同じクエリをもう一度実行しますが、今度はレビューの中から awesome を検索してみます。