跳到主要内容
跳到主要内容

亚马逊客户评价

此数据集包含超过 1.5 亿条亚马逊产品的客户评价。数据以 snappy 压缩的 Parquet 文件形式存储在 AWS S3 中,总大小为 49 GB(压缩后)。让我们逐步了解如何将其插入到 ClickHouse 中。

备注

以下查询是在 生产 实例的 ClickHouse Cloud 上执行的。

加载数据集

  1. 在不将数据插入 ClickHouse 的情况下,我们可以就地查询它。让我们获取一些行,以便看看它们的样子:

行的样子如下:

  1. 让我们定义一个新的 MergeTreeamazon_reviews 来存储这些数据到 ClickHouse:
  1. 以下的 INSERT 命令使用了 s3Cluster 表函数,它允许使用集群中的所有节点并行处理多个 S3 文件。我们还使用了通配符插入任何以 https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_*.snappy.parquet 开头的文件:
提示

在 ClickHouse Cloud 中,集群名称为 default。如果您没有集群,可以将 default 更改为您集群的名称……或者使用 s3 表函数(而不是 s3Cluster)。

  1. 这个查询不会花太长时间——每秒大约 300,000 行。大约 5 分钟后,您应该会看到所有行被插入:
  1. 让我们看看我们的数据占用了多少空间:

原始数据约为 70G,但在 ClickHouse 中压缩后仅占用约 30G:

示例查询

  1. 让我们运行一些查询……以下是数据集中最有帮助的前10条评论:

注意这个查询需要处理全部 151M 行,但耗时不到一秒!

  1. 以下是 Amazon 上评论最多的前10款产品:
  1. 以下是每个产品每个月的平均评论评分(实际上是 Amazon 职位面试问题!):

它计算了每个产品的所有月平均值,但我们只返回了 20 行:

  1. 下面是每个产品类别的总投票数。这个查询快速,因为 product_category 在主键中:
  1. 让我们找到在评论中 "awful" 一词出现频率最高的产品。这是一项大任务 - 需要解析超过 151M 字符串查找单一单词:

这个查询只花了 4 秒 - 非常令人印象深刻 - 结果也很有趣:

  1. 我们可以再运行相同的查询,只不过这次我们在评论中搜索 awesome