clickhouse-local
Когда использовать clickhouse-local и когда ClickHouse
clickhouse-local — это простая в использовании версия ClickHouse, которая идеально подходит разработчикам, которым нужно быстро обрабатывать локальные и удалённые файлы с помощью SQL без установки полноценного сервера баз данных. С clickhouse-local разработчики могут выполнять SQL-команды (используя SQL-диалект ClickHouse) прямо из командной строки, что обеспечивает простой и эффективный способ доступа к возможностям ClickHouse без необходимости полной установки ClickHouse. Одно из основных преимуществ clickhouse-local заключается в том, что он уже включён при установке clickhouse-client. Это означает, что разработчики могут быстро начать работу с clickhouse-local без сложного процесса установки.
Хотя clickhouse-local — отличный инструмент для разработки и тестирования, а также для обработки файлов, он не подходит для обслуживания конечных пользователей или приложений. В таких сценариях рекомендуется использовать open‑source ClickHouse. ClickHouse — это мощная OLAP-база данных, предназначенная для работы с крупномасштабными аналитическими нагрузками. Она обеспечивает быстрое и эффективное выполнение сложных запросов по большим наборам данных, что делает её идеальной для производственных сред, где критична высокая производительность. Кроме того, ClickHouse предлагает широкий набор функций, таких как репликация, шардинг и высокая доступность, которые необходимы для масштабирования при работе с большими объёмами данных и обслуживания приложений. Если вам нужно обрабатывать большие наборы данных или обслуживать конечных пользователей либо приложения, мы рекомендуем использовать open‑source ClickHouse вместо clickhouse-local.
Ознакомьтесь с документацией ниже, где приведены примеры сценариев использования clickhouse-local, таких как запрос к локальному файлу или чтение parquet-файла в S3.
Скачайте clickhouse-local
clickhouse-local использует тот же бинарный файл clickhouse, который запускает сервер ClickHouse и clickhouse-client. Проще всего скачать последнюю версию с помощью следующей команды:
Скачанный вами бинарный файл может запускать самые разные инструменты и утилиты ClickHouse. Если вы хотите запустить ClickHouse как сервер базы данных, ознакомьтесь с разделом Quick Start.
Запрос данных из файла с помощью SQL
Типичный способ использования clickhouse-local — выполнение разовых произвольных запросов к файлам, когда вам не нужно предварительно загружать данные в таблицу. clickhouse-local может потоково считывать данные из файла во временную таблицу и выполнять ваши SQL-запросы.
Если файл находится на той же машине, что и clickhouse-local, вы можете просто указать его для загрузки. Следующий файл reviews.tsv содержит выборку отзывов о товарах с Amazon:
Эта команда является сокращённой формой следующей команды:
ClickHouse определяет, что файл имеет табличный формат с разделителем табуляцией, по его расширению. Если вам нужно явно задать формат, просто укажите один из многочисленных форматов ввода ClickHouse:
Табличная функция file создаёт таблицу; вы можете использовать DESCRIBE, чтобы увидеть автоматически определённую схему:
Давайте найдём товар с самым высоким рейтингом:
Выполнение запросов к данным в файле Parquet в AWS S3
Если у вас есть файл в S3, используйте clickhouse-local и табличную функцию s3, чтобы выполнять запросы к файлу непосредственно (без вставки данных в таблицу ClickHouse). У нас есть файл house_0.parquet в публичном бакете, который содержит цены на объекты недвижимости, проданные в Соединённом Королевстве. Давайте посмотрим, сколько строк он содержит:
Файл содержит 2,7 млн строк:
Всегда полезно посмотреть, какую схему данных ClickHouse определяет на основании файла:
Давайте посмотрим, какие самые дорогие районы:
Когда будете готовы загружать свои файлы в ClickHouse, запустите сервер ClickHouse и вставьте результаты выполнения табличных функций file и s3 в таблицу на движке MergeTree. Для получения дополнительной информации см. раздел Быстрый старт.
Преобразование форматов
Вы можете использовать clickhouse-local для преобразования данных между различными форматами. Пример:
Форматы автоматически определяются на основании расширений файлов:
Для краткости можно записать это с использованием аргумента --copy:
Использование
По умолчанию clickhouse-local имеет доступ к данным сервера ClickHouse на том же хосте и не зависит от конфигурации сервера. Также поддерживается загрузка конфигурации сервера с помощью аргумента --config-file. Для временных данных по умолчанию создаётся отдельный уникальный каталог.
Основное использование (Linux):
Базовое использование на Mac:
clickhouse-local также поддерживается на Windows через WSL2.
Аргументы:
-S,--structure— структура таблицы для входных данных.--input-format— входной формат, по умолчаниюTSV.-F,--file— путь к данным, по умолчаниюstdin.-q,--query— запросы для выполнения с;в качестве разделителя.--queryможет быть указан несколько раз, например,--query "SELECT 1" --query "SELECT 2". Не может использоваться одновременно с--queries-file.--queries-file— путь к файлу с запросами для выполнения.--queries-fileможет быть указан несколько раз, например,--queries-file queries1.sql --queries-file queries2.sql. Не может использоваться одновременно с--query.--multiquery, -n– если указана, после опции--queryможно перечислить несколько запросов, разделённых точкой с запятой. Для удобства также можно опустить--queryи передать запросы непосредственно после--multiquery.-N,--table— имя таблицы, в которую помещаются выходные данные, по умолчаниюtable.-f,--format,--output-format— выходной формат, по умолчаниюTSV.-d,--database— база данных по умолчанию_local.--stacktrace— выводить отладочную информацию в случае исключения.--echo— печатать запрос перед выполнением.--verbose— более подробная информация о выполнении запроса.--logger.console— вывод логов в консоль.--logger.log— имя файла лога.--logger.level— уровень логирования.--ignore-error— не останавливать обработку, если запрос завершился ошибкой.-c,--config-file— путь к конфигурационному файлу в том же формате, что и для сервера ClickHouse; по умолчанию конфигурация пустая.--no-system-tables— не подключать системные таблицы.--help— справка по аргументам дляclickhouse-local.-V,--version— вывести информацию о версии и завершить работу.
Также существуют аргументы для каждой конфигурационной переменной ClickHouse, которые чаще используются вместо --config-file.
Примеры
Предыдущий пример эквивалентен следующему:
Необязательно использовать stdin или аргумент --file, вы можете открывать любое количество файлов с помощью табличной функции file:
Теперь выведем объём памяти, потребляемый каждым пользователем Unix:
Запрос:
Результат:
Дополнительные материалы
- Извлечение, преобразование и выполнение запросов к данным в локальных файлах с использованием clickhouse-local
- Загрузка данных в ClickHouse — часть 1
- Анализ крупных реальных наборов данных: более 100 лет метеонаблюдений в ClickHouse
- Блог: Извлечение, преобразование и выполнение запросов к данным в локальных файлах с использованием clickhouse-local