Skip to main content
Этот набор данных содержит более 150 млн отзывов покупателей о товарах Amazon. Данные хранятся в сжатых алгоритмом snappy файлах Parquet в AWS S3; их общий размер составляет 49 ГБ (в сжатом виде).
Вы можете попробовать загрузить данные в самоуправляемый ClickHouse или ClickHouse Cloud. Если у вас ещё нет аккаунта, вы можете начать с бесплатного пробного периода ClickHouse Cloud.
Давайте по шагам разберём, как вставить эти данные в ClickHouse.

Загрузка набора данных

  1. Не выполняя вставку данных в ClickHouse, мы можем выполнять запросы к ним напрямую. Давайте выберем несколько строк, чтобы посмотреть, как они выглядят:
Строки выглядят так:
  1. Давайте создадим новую таблицу MergeTree с именем amazon_reviews для хранения этих данных в ClickHouse:
  1. Следующая команда INSERT использует табличную функцию s3Cluster, которая распределяет файлы S3 между узлами вашего кластера для параллельного чтения.
В ClickHouse Cloud ваш кластер называется default, поэтому команду можно выполнить в приведённом виде. На самоуправляемом сервере замените default на имя вашего кластера. Если же вы используете один сервер, вместо этого воспользуйтесь табличной функцией s3: уберите первый аргумент, чтобы вызов начинался с URL. Мы используем подстановочный знак в URL, чтобы вставить все соответствующие файлы отзывов.
  1. Этот запрос выполняется быстро — в среднем около 300 000 строк в секунду. Примерно через 5 минут вы должны увидеть, что все строки вставлены:
  1. Давайте посмотрим, сколько места занимают наши данные:
Исходные данные занимали около 70G, но в ClickHouse в сжатом виде они занимают примерно 30G.

Примеры запросов

  1. Выполним несколько запросов. Вот 10 самых полезных отзывов в наборе данных:
В этом запросе используется проекция для повышения производительности.
  1. Вот 10 товаров на Amazon с наибольшим числом отзывов:
  1. Вот средние оценки отзывов по месяцам для каждого товара (реальный вопрос с собеседования в Amazon!):
  1. Вот общее число голосов по каждой категории товаров. Этот запрос работает быстро, потому что product_category входит в primary key:
  1. Найдём товары, в отзывах к которым слово “awful” встречается чаще всего. Это ресурсоёмкая задача: нужно разобрать более 151 млн строк в поисках одного слова:
runnable
Обратите внимание на время выполнения запроса при таком большом объёме данных. И результаты тоже довольно занятные!
  1. Мы можем снова выполнить тот же запрос, но на этот раз будем искать awesome в отзывах:
runnable