NativeDumper¶
- NativeDumper(
- connector,
- compression_method=CompressionMethod.ZSTD,
- logger=None,
- timeout=DBMS_DEFAULT_TIMEOUT_SEC,
- )
Класс для чтения и записи данных в Native формате ClickHouse.
- Параметры:
connector (CHConnector) – Коннектор для подключения к ClickHouse
compression_method (CompressionMethod) – Метод сжатия данных
logger (Logger | None) – Логгер для записи событий
timeout (int) – Таймаут операций в секундах
- Исключение:
ValueError – Если используется порт 9000
ClickhouseServerError – При ошибках сервера ClickHouse
NativeDumperError – При других ошибках инициализации
Описание:
Внешний модуль native-dumper входит в состав dbhose-airflow, но может быть установлен отдельно.
Установка модуля native-dumper без установки dbhose-airflow¶
pip install native-dumper
Часть кода написана на языке Rust, что обеспечивает более быструю работу по сравнению с языком Python.
Назначение класса NativeDumper - обмен данными с сервером Clickhouse по http/https протоколу.
Импорт модуля¶
from native_dumper import (
NativeDumper,
CHConnector,
)
connector = CHConnector(
host="localhost",
dbname="",
user="my_user",
password="my_password", # noqa: S106
port=8123,
)
dumper = NativeDumper(connector)
NativeDumper предоставляет функциональность для работы с Native форматом ClickHouse -
бинарным протоколом, оптимизированным для эффективной передачи данных между клиентом и сервером.
Класс автоматически устанавливает соединение с сервером ClickHouse, проверяет совместимость и инициализирует необходимые компоненты для работы с Native форматом.
Параметры инициализации:
Параметр |
Тип |
Описание |
|---|---|---|
|
|
Обязательный. Коннектор, содержащий параметры подключения к ClickHouse (хост, порт, пользователь, пароль) |
|
|
Метод сжатия данных. По умолчанию: |
|
|
Логгер для записи событий и ошибок. Если не указан, создается |
|
|
Таймаут операций в секундах. По умолчанию: |
Атрибуты экземпляра:
- connector: CHConnector¶
Коннектор для подключения к ClickHouse.
- compression_method: CompressionMethod¶
Метод сжатия данных.
- logger: Logger¶
Логгер для записи событий.
- cursor: HTTPCursor¶
Курсор для выполнения запросов через HTTP протокол.
- version: str¶
Версия сервера ClickHouse.
- dbname: str¶
Имя СУБД (всегда «clickhouse»).
Ограничения и исключения:
Порт 9000 не поддерживается - NativeDumper использует HTTP/HTTPS протокол (порт 8123 по умолчанию), а не Native протокол (порт 9000)
Требуется корректный коннектор - должен содержать все необходимые параметры подключения
Автоматическое переподключение - при потере соединения могут возникать исключения
Примеры использования:
# Создание NativeDumper с параметрами по умолчанию
from native-dumper import NativeDumper, CHConnector, CompressionMethod
connector = CHConnector(
host="localhost",
port=8123,
user="default",
password=""
)
dumper = NativeDumper(
connector=connector,
compression_method=CompressionMethod.ZSTD,
timeout=30
)
# Создание с кастомным логгером
import logging
custom_logger = logging.getLogger("native_dumper")
custom_logger.setLevel(logging.DEBUG)
dumper_with_logger = NativeDumper(
connector=connector,
logger=custom_logger
)
Обработка ошибок:
try:
connector = CHConnector(host="localhost", port=9000) # Неправильный порт!
dumper = NativeDumper(connector=connector)
except ValueError as e:
print(f"Неправильная конфигурация: {e}")
try:
connector = CHConnector(host="nonexistent", port=8123)
dumper = NativeDumper(connector=connector)
except NativeDumperError as e:
print(f"Ошибка подключения: {e}")
Примечания:
Native формат - самый эффективный способ передачи данных в/из ClickHouse
Используется HTTP/HTTPS протокол (порт 8123 или 443), а не Native TCP протокол (порт 9000)
Сжатие данных уменьшает объем передаваемых данных и ускоряет передачу по сети
Класс автоматически отправляет HELLO-пакет при инициализации для проверки соединения
Для больших объемов данных рекомендуется использовать ZSTD сжатие
Доступные методы класса и декоратор multiquery¶
Дополнительные компоненты¶
См. также:
CompressionMethod- Перечисление методов сжатия