Подключите Apify к ClickHouse
Apify — платформа для веб-скрапинга и автоматизации. В ней можно создавать, запускать и масштабировать бессерверные облачные программы — Actors. Actors собирают данные с сайтов, сканируют веб, обрабатывают данные и автоматизируют рабочие процессы. Каждый запуск Actor создает структурированный результат, который сохраняется в Datasets (коллекциях JSON-объектов).
Загружайте собранные или обработанные данные в ClickHouse для анализа, мониторинга или обогащения данных.
Ключевые понятия
| Понятие в Apify | Что это |
|---|---|
| Actor | Бессерверная облачная программа, которая запускается на платформе Apify. В Apify Store доступны тысячи готовых Actor. |
| Dataset | Результат запуска Actor. Табличная коллекция JSON-объектов, доступная в форматах JSON, CSV, XML и других через Apify API. |
| Webhook | HTTP-вызов, запускаемый по событию, например при успешном завершении Actor, ошибке или наступлении других событий жизненного цикла. Используйте вебхуки, чтобы автоматизировать конвейер Apify-to-ClickHouse. |
Руководство по настройке
Подготовьте данные для подключения к ClickHouse
Чтобы подключиться к ClickHouse по HTTP(S) вам потребуется следующая информация:
| Параметр(ы) | Описание |
|---|---|
HOST and PORT | Typically, the port is 8443 when using TLS or 8123 when not using TLS. |
DATABASE NAME | Out of the box, there is a database named default, use the name of the database that you want to connect to. |
USERNAME and PASSWORD | Out of the box, the username is default. Use the username appropriate for your use case. |
The details for your ClickHouse Cloud service are available in the ClickHouse Cloud console. Select a service and click Connect:

Choose HTTPS. Connection details are displayed in an example curl command.

If you're using self-managed ClickHouse, the connection details are set by your ClickHouse administrator.
Предварительные требования для Apify
Также вам понадобятся:
- Аккаунт Apify (доступен бесплатный тариф).
- Токен API Apify, который можно найти в Settings > Integrations в консоли Apify.
- Установленный локально Node.js 18+ (для примеров на JavaScript).
Установите зависимости
Установите JavaScript-клиент Apify и JavaScript-клиент ClickHouse:
Apify также предоставляет клиент Python. Если вы предпочитаете Python, установите apify-client через pip и используйте clickhouse-connect для ClickHouse.
Получите dataset Apify и загрузите его в ClickHouse
Следующий скрипт получает результаты выполнения Actor в Apify и вставляет их в ClickHouse:
Для больших наборов данных используйте постраничную загрузку результатов с помощью параметров limit и offset конечной точки List dataset items. Также можно передать clean=true, чтобы получать только непустые элементы без дубликатов.
Автоматизируйте процесс с помощью вебхуков
Вместо ручного запуска скрипта автоматизируйте пайплайн, чтобы данные загружались в ClickHouse каждый раз после завершения Actor:
- В консоли Apify перейдите к нужному Actor и откройте вкладку Integrations.
- Добавьте новый вебхук со следующими параметрами:
- Тип события:
ACTOR.RUN.SUCCEEDED - Действие: HTTP POST в вашу конечную точку загрузчика или запуск другого Actor, который выполняет вставку в ClickHouse.
- Тип события:
- Полезная нагрузка вебхука включает
defaultDatasetId, который можно использовать для получения результатов запуска.
Подробнее о полезной нагрузке и доступных настройках см. в документации по вебхукам Apify.
В качестве альтернативы можно использовать Apify Schedules для запуска Actor по cron-подобному расписанию в сочетании с вебхуками на этапе загрузки.
Лучшие практики
Получение данных из Apify
Используйте клиентскую библиотеку Apify (apify-client для JavaScript или Python) вместо прямых HTTP-запросов. Она сама обрабатывает пагинацию, повторные попытки и аутентификацию. Для больших наборов данных постранично извлекайте результаты с помощью параметров limit и offset конечной точки List dataset items.
Загрузка в ClickHouse
Используйте формат JSONEachRow при вставке в ClickHouse. Он напрямую соответствует JSON-выводу Apify и не требует преобразования.
Schema таблицы ClickHouse должна соответствовать полям вывода Actor. Проверьте выходную schema Actor на странице Apify Store или на вкладке Dataset после выполнения.
Производительность
Для высоконагруженных вставок из JavaScript-клиента следуйте рекомендациям из раздела Советы по оптимизации производительности. Группируйте строки в более крупные вставки, а не вставляйте их по одной, и рассмотрите асинхронные вставки, если пакетная обработка на стороне клиента непрактична.
Безопасность
В примерах на этой странице для простоты используются пользователь default и база данных default. В продакшене создайте отдельного пользователя с минимальными привилегиями, необходимыми для вставки данных в целевую таблицу, и храните учетные данные в защищенном месте (например, в переменных окружения или менеджере секретов, а не в исходном коде). См. управление доступом в Cloud для получения рекомендаций.