Skip to content

Предварительные требования

Совместимость версий

  • Версии сервера Clickhouse:
  • Официально заявлено: 22.8 или выше
  • Фактически протестировано: 21.1, 25.1
  • Версии Spark: 2.3.x - 3.5.x
  • Версии Java: 8 - 20

См. официальную документацию.

Установка PySpark

Для использования коннектора Clickhouse необходимо иметь установленный PySpark (или добавленный в sys.path) ДО создания экземпляра коннектора.

См. инструкцию по установке для получения более подробной информации.

Подключение к Clickhouse

Порт подключения

Коннектор может использовать только протоколы HTTP (обычно порт 8123) или HTTPS (обычно порт 8443).

Протоколы TCP и GRPC НЕ поддерживаются.

Подключение к кластеру

Возможно подключение к кластеру Clickhouse и использование его возможностей балансировки нагрузки для параллельного чтения или записи данных. Каждый executor Spark может подключаться к случайным узлам Clickhouse, вместо отправки всех данных на узел, указанный в параметрах подключения.

Для этого требуется, чтобы все серверы Clickhouse работали на разных хостах и прослушивали один и тот же HTTP-порт. Установите auto_discovery=True, чтобы включить эту функцию (по умолчанию отключена):

Clickhouse(
    host="node1.of.cluster",
    port=8123,
    extra={
        "auto_discovery": True,
        "load_balancing_policy": "roundRobin",
    },
)

См. официальную документацию.

Необходимые права

Попросите администратора кластера Clickhouse установить следующие права для пользователя, используемого для создания подключения:

    -- разрешить создание таблиц в целевой схеме
    GRANT CREATE TABLE ON myschema.* TO username;

    -- разрешить чтение и запись в определенную таблицу
    GRANT SELECT, INSERT ON myschema.mytable TO username;
    -- разрешить чтение определенной таблицы
    GRANT SELECT ON myschema.mytable TO username;

Более подробную информацию можно найти в официальной документации.