В этом руководстве вы загрузите 28 миллионов строк данных Hacker News в таблицу ClickHouse из файлов в форматах CSV и Parquet и выполните несколько простых запросов, чтобы изучить эти данные.
CSV
Выборка данных
clickhouse-local позволяет быстро обрабатывать локальные файлы без
необходимости развёртывать и настраивать сервер ClickHouse.Перед загрузкой данных в ClickHouse давайте сначала сформируем выборку из файла с помощью clickhouse-local.
Выполните в консоли:Query
Response
file позволяет читать файл с локального диска, указав только формат CSVWithNames.
Что особенно важно, схема автоматически определяется по содержимому файла.
Также обратите внимание, что clickhouse-local умеет читать сжатый файл, определяя формат gzip по расширению.
Формат Vertical используется, чтобы удобнее было просматривать данные по каждому столбцу.Загрузите данные с автоматическим определением схемы
Самый простой и мощный инструмент для загрузки данных —clickhouse-client, многофункциональный нативный клиент командной строки.
Чтобы загрузить данные, можно снова воспользоваться автоматическим определением схемы и доверить ClickHouse определение типов столбцов.Выполните следующую команду, чтобы создать таблицу и сразу вставить данные из удалённого CSV-файла, обращаясь к его содержимому через функцию url.
Схема будет определена автоматически:DESCRIBE TABLE позволяет понять, какие типы были назначены.Query
Response
INSERT INTO, SELECT.
С помощью функции url данные будут передаваться напрямую по URL:Изучите данные
Чтобы просмотреть выборку историй Hacker News и отдельных столбцов, выполните следующий запрос:Query
Response
Определите схему
Очевидная и простая оптимизация — задать тип для каждого поля. Помимо объявления поля времени с типомDateTime, мы зададим подходящий тип для каждого из перечисленных ниже полей после удаления существующего набора данных.
В ClickHouse первичный ключ данных задаётся с помощью предложения ORDER BY.Выбор подходящих типов и определение того, какие столбцы включить в предложение ORDER BY,
помогут повысить скорость запросов и улучшить сжатие.Выполните запрос ниже, чтобы удалить старую схему и создать улучшенную схему:Query
clickhouse-client, загрузите файл с помощью предложения INFILE и явного INSERT INTO.Query
Выполнение примеров запросов
Ниже приведены примеры запросов, которые могут послужить отправной точкой для написания собственных запросов.Насколько часто обсуждается тема «ClickHouse» на Hacker News?
Поле score содержит метрику популярности материалов, тогда как полеid и оператор конкатенации || можно использовать для формирования ссылки на исходную публикацию.Query
Response
time
как DateTime: использование подходящего типа данных позволяет применять функцию toYYYYMM():Query
Response
Кто больше всего комментирует статьи, связанные с ClickHouse?
Query
Response
Какие комментарии вызывают наибольший интерес?
Query
Response
Parquet
Вставка данных
Выполните следующий запрос, чтобы снова прочитать те же данные в формате Parquet, используя функциюurl для чтения удалённых данных:Ключи со значением
NULL в ParquetИз-за особенностей формата Parquet нужно учитывать, что ключи могут быть NULL,
даже если в самих данных их нет.Response
Добавьте пропускающий индекс, чтобы ускорить запросы
Чтобы узнать, сколько комментариев содержат упоминание “ClickHouse”, выполните следующий запрос:Query
Response
system.data_skipping_indices).После создания индекса снова выполните запрос:Query
Response
EXPLAIN можно использовать, чтобы понять, почему добавление этого индекса
ускорило запрос примерно в 3,4 раза.Response
Query
Response
Query
Response