Amazon お客様のレビュー
このデータセットには、Amazon製品に関する1.5億件以上の顧客レビューが含まれています。データはAWS S3のsnappy圧縮されたParquetファイルにあり、合計サイズは49GB(圧縮後)です。これをClickHouseに挿入する手順を見ていきましょう。
注記
以下のクエリは、Productionインスタンスで実行されました ClickHouse Cloud。
データセットの読み込み
- データをClickHouseに挿入せずに、インプレースでクエリを実行できます。いくつかの行を取得して、どのような内容か確認しましょう:
行の内容は以下のようになります:
- ClickHouseにこのデータを保存するために、新しい
MergeTree
テーブルamazon_reviews
を定義しましょう:
- 次の
INSERT
コマンドは、s3Cluster
テーブル関数を使用して、クラスタのすべてのノードで複数のS3ファイルを並行処理します。また、ワイルドカードを使用して、https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_*.snappy.parquet
で始まる任意のファイルを挿入します:
ヒント
ClickHouse Cloudでは、クラスタの名前は default
です。自分のクラスタの名前に default
を変更するか、クラスタがない場合は s3
テーブル関数を使用してください(s3Cluster
の代わりに)。
- このクエリは長くかからず、平均して約300,000行/秒の速度で実行されます。5分以内にすべての行が挿入されるはずです:
- データがどれだけのスペースを使用しているか確認してみましょう:
元のデータは約70GBでしたが、ClickHouseでは約30GBに圧縮されています:
例題クエリ
- いくつかのクエリを実行してみましょう...データセット内の最も役立つレビュー上位10件を示します:
クエリは151M行すべてを処理する必要がありますが、1秒未満で完了します!
- 口コミ数が最も多いAmazonの商品上位10件を示します:
- 各商品の月ごとのレビュー評価の平均を示します(実際の Amazonの就職面接質問!):
各商品の月ごとの平均を計算しますが、20行だけを返します:
- 各商品カテゴリーごとの投票数の合計を示します。このクエリは
product_category
が主キーに含まれているため早いです:
- レビューで最も頻繁に「awful」と記載された商品を見つけましょう。これは大きなタスクです - 151M文字列を解析して単一の単語を探す必要があります:
クエリはわずか4秒で完了します - インプレッシブですね - 結果は面白い読書です:
- 同じクエリを再度実行しますが、今度はレビューで「awesome」を検索します: