Перейти к основному содержанию
Перейти к основному содержанию

Быстрый старт с ClickHouse OSS

В этом кратком руководстве по быстрому старту вы за 8 простых шагов настроите ClickHouse OSS. Вы скачаете подходящий бинарный файл для своей ОС, узнаете, как запускать сервер ClickHouse, и воспользуетесь клиентом ClickHouse, чтобы создать таблицу, затем вставите в неё данные и выполните запрос для выборки этих данных.

Загрузка ClickHouse

ClickHouse работает нативно на Linux, FreeBSD и macOS, а на Windows — через WSL. Самый простой способ загрузить ClickHouse локально — выполнить следующую команду curl. Команда определяет, поддерживается ли ваша операционная система, и загружает соответствующий бинарный файл ClickHouse, собранный из ветки master.

Примечание

Рекомендуется выполнять приведённую ниже команду из нового пустого подкаталога, так как при первом запуске сервера ClickHouse в каталоге с исполняемым файлом будут созданы конфигурационные файлы.

Приведенный ниже скрипт не рекомендуется использовать для установки ClickHouse в production-среде. Если вам необходимо установить production-экземпляр ClickHouse, обратитесь к странице установки.

curl https://clickhouse.com/ | sh

Вы увидите:

Бинарный файл ClickHouse успешно загружен, его можно запустить следующим образом:
    ./clickhouse

Также его можно установить:
sudo ./clickhouse install

На данном этапе вы можете проигнорировать предложение выполнить команду install.

Примечание

Для пользователей Mac: Если вы получаете ошибки о том, что разработчик бинарного файла не может быть проверен, см. "Исправление ошибки проверки разработчика в MacOS".

Запуск сервера

Выполните следующую команду для запуска сервера ClickHouse:

./clickhouse server

Терминал должен заполниться логами. Это ожидаемое поведение. В ClickHouse уровень логирования по умолчанию установлен в trace, а не в warning.

Запуск клиента

Используйте clickhouse-client для подключения к вашему сервису ClickHouse. Откройте новый терминал, перейдите в каталог, где сохранён бинарный файл clickhouse, и выполните следующую команду:

./clickhouse client

При успешном подключении к вашему сервису на localhost вы увидите смайлик:

my-host :)

Создание таблицы

Используйте CREATE TABLE для создания новой таблицы. Стандартные SQL DDL-команды работают в ClickHouse с одним дополнением — таблицы в ClickHouse требуют указания клаузы ENGINE. Используйте MergeTree, чтобы воспользоваться преимуществами производительности ClickHouse:

CREATE TABLE my_first_table
(
    user_id UInt32,
    message String,
    timestamp DateTime,
    metric Float32
)
ENGINE = MergeTree
PRIMARY KEY (user_id, timestamp)

Вставка данных

Вы можете использовать знакомую команду INSERT INTO TABLE с ClickHouse, но важно понимать, что каждая вставка в таблицу MergeTree приводит к созданию в хранилище того, что мы называем партом (part) в ClickHouse. Эти ^^парты^^ впоследствии объединяются ClickHouse в фоновом режиме.

В ClickHouse рекомендуется выполнять массовую вставку большого количества строк за один раз (десятки тысяч или даже миллионы одновременно), чтобы минимизировать количество частей, которые необходимо объединять в фоновом процессе.

В данном руководстве мы пока не будем этим заниматься. Выполните следующую команду для вставки нескольких строк данных в таблицу:

INSERT INTO my_first_table (user_id, message, timestamp, metric) VALUES
    (101, 'Привет, ClickHouse!',                                 now(),       -1.0    ),
    (102, 'Вставляйте много строк за один пакет',                     yesterday(), 1.41421 ),
    (102, 'Сортируйте данные на основе часто используемых запросов', today(),     2.718   ),
    (101, 'Гранулы — это наименьшие порции читаемых данных',      now() + 5,   3.14159 )

Запросы к новой таблице

Запрос SELECT можно написать так же, как в любой другой SQL-базе данных:

SELECT *
FROM my_first_table
ORDER BY timestamp

Обратите внимание, что ответ возвращается в виде таблицы:

┌─user_id─┬─message────────────────────────────────────────────┬───────────timestamp─┬──metric─┐
│     102 │ Вставляйте много строк за один пакет               │ 2022-03-21 00:00:00 │ 1.41421 │
│     102 │ Сортируйте данные на основе часто используемых запросов │ 2022-03-22 00:00:00 │   2.718 │
│     101 │ Привет, ClickHouse!                                │ 2022-03-22 14:04:09 │      -1 │
│     101 │ Гранулы — это наименьшие порции считываемых данных │ 2022-03-22 14:04:14 │ 3.14159 │
└─────────┴────────────────────────────────────────────────────┴─────────────────────┴─────────┘

4 строки в наборе. Прошло: 0.008 сек.

Вставка собственных данных

Следующий шаг — загрузить ваши данные в ClickHouse. Для приёма данных доступно множество табличных функций и интеграций. Примеры приведены на вкладках ниже. Полный список технологий, интегрируемых с ClickHouse, представлен на странице Интеграции.

Используйте табличную функцию s3, чтобы читать файлы из S3. Это табличная функция — то есть результатом является таблица, которую можно:

  1. использовать как источник для запроса SELECT (что позволяет выполнять разовые запросы и оставлять данные в S3), или
  2. вставить результат в таблицу MergeTree (когда вы будете готовы перенести данные в ClickHouse).

Пример разового (ad hoc) запроса:

SELECT
passenger_count,
avg(toFloat32(total_amount))
FROM s3(
'https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz',
'TabSeparatedWithNames'
)
GROUP BY passenger_count
ORDER BY passenger_count;

Перемещение данных в таблицу ClickHouse будет выглядеть следующим образом, где nyc_taxi — это таблица MergeTree:

INSERT INTO nyc_taxi
SELECT * FROM s3(
'https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz',
'TabSeparatedWithNames'
)
SETTINGS input_format_allow_errors_num=25000;

Ознакомьтесь с нашей подборкой материалов документации AWS S3, где приведена подробная информация и примеры использования S3 с ClickHouse.


Исследование данных