Интеграция Amazon Kinesis с ClickHouse Cloud
Предварительные условия
Вы ознакомились с введением в ClickPipes и настроили учетные данные IAM или IAM роль. Следуйте руководству по контролю доступа на основе ролей Kinesis для получения информации о том, как настроить роль, которая будет работать с ClickHouse Cloud.
Создание вашего первого ClickPipe
- Получите доступ к SQL Console для вашего ClickHouse Cloud Service.

- Выберите кнопку
Data Sources
в левом меню и нажмите "Настроить ClickPipe"

- Выберите источник данных.

- Заполните форму, указав имя вашего ClickPipe, описание (по желанию), вашу роль IAM или учетные данные, а также другие данные подключения.

- Выберите поток Kinesis и начальное смещение. Интерфейс отобразит образец документа из выбранного источника (тема Kafka и др.). Вы также можете включить расширенный Fan-out для потоков Kinesis, чтобы улучшить производительность и стабильность вашего ClickPipe (Дополнительную информацию о расширенном Fan-out можно найти здесь)

- На следующем шаге вы можете выбрать, хотите ли вы загружать данные в новую таблицу ClickHouse или использовать существующую. Следуйте инструкциям на экране, чтобы изменить имя таблицы, схему и настройки. Вы можете видеть предварительный просмотр ваших изменений в образце таблицы вверху.

Вы также можете настроить расширенные параметры, используя предоставленные элементы управления.

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

- Наконец, вы можете настроить разрешения для внутреннего пользователя ClickPipes.
Разрешения: ClickPipes создаст специального пользователя для записи данных в целевую таблицу. Вы можете выбрать роль для этого внутреннего пользователя, используя кастомную роль или одну из предопределенных ролей:
Полный доступ
: с полным доступом к кластеру. Это может быть полезно, если вы используете материализованное представление или словарь с целевой таблицей.Только целевая таблица
: с разрешениемINSERT
только для целевой таблицы.

- Нажав "Завершить настройку", система зарегистрирует ваш ClickPipe, и вы сможете увидеть его в сводной таблице.


Сводная таблица предоставляет элементы управления для отображения образца данных из источника или целевой таблицы в ClickHouse.

А также элементы управления для удаления ClickPipe и отображения сводки задания по загрузке.

- Поздравляем! Вы успешно настроили ваш первый ClickPipe. Если это потоковый ClickPipe, он будет работать непрерывно, загружая данные в реальном времени из вашего удаленного источника данных. В противном случае он загрузит пакет и завершит работу.
Поддерживаемые форматы данных
Поддерживаемые форматы:
Поддерживаемые типы данных
Поддержка стандартных типов
В ClickPipes в настоящее время поддерживаются следующие типы данных ClickHouse:
- Основные числовые типы - [U]Int8/16/32/64, Float32/64 и BFloat16
- Большие целочисленные типы - [U]Int128/256
- Десятичные типы
- Логический
- Строка
- FixedString
- Дата, Date32
- DateTime, DateTime64 (только UTC-часовые зоны)
- Enum8/Enum16
- UUID
- IPv4
- IPv6
- все типы ClickHouse LowCardinality
- Map с ключами и значениями, использующими любой из указанных выше типов (включая Nullables)
- Tuple и Array с элементами, использующими любой из указанных выше типов (включая Nullables, только одна глубина)
- Типы SimpleAggregateFunction (для назначения AggregatingMergeTree или SummingMergeTree)
Поддержка типа Variant
Вы можете вручную указать тип Variant (например, Variant(String, Int64, DateTime)
) для любого поля JSON в потоке исходных данных. Из-за способа, которым ClickPipes определяет правильный подтип variant, в определении variant может быть использован только один целочисленный или временной тип - например, Variant(Int64, UInt32)
не поддерживается.
Поддержка типа JSON
Поля JSON, которые всегда являются объектом JSON, могут быть назначены столбцу назначения JSON. Вам нужно будет вручную изменить столбец назначения на необходимый тип JSON, включая любые фиксированные или пропущенные пути.
Виртуальные столбцы Kinesis
Для потока Kinesis поддерживаются следующие виртуальные столбцы. При создании новой целевой таблицы виртуальные столбцы могут быть добавлены, используя кнопку Добавить столбец
.
Имя | Описание | Рекомендуемый тип данных |
---|---|---|
_key | Ключ партиции Kinesis | String |
_timestamp | Приблизительное время прибытия Kinesis (миллисекундная точность) | DateTime64(3) |
_stream | Имя потока Kinesis | String |
_sequence_number | Номер последовательности Kinesis | String |
_raw_message | Полное сообщение Kinesis | String |
Поле _raw_message может быть использовано в случаях, когда требуется только полная запись JSON Kinesis (например, используя функции ClickHouse JsonExtract*
для заполнения материального представления downstream). Для таких потоков может повысить производительность ClickPipes удаление всех "невиртуальных" столбцов.
Ограничения
- DEFAULT не поддерживается.
Производительность
Пакетная обработка
ClickPipes вставляет данные в ClickHouse пакетами. Это сделано для того, чтобы избежать создания слишком большого количества частей в базе данных, что может привести к проблемам с производительностью в кластере.
Пакеты вставляются, когда выполнено одно из следующих условий:
- Размер пакета достиг максимального размера (100,000 строк или 32MB на 1GB памяти реплики)
- Пакет открыт максимальное количество времени (5 секунд)
Задержка
Задержка (определяемая как время между отправкой сообщения Kinesis в поток и доступностью сообщения в ClickHouse) будет зависеть от множества факторов (например, задержка Kinesis, задержка сети, размер/формат сообщения). Описанная в предыдущем разделе пакетная обработка также повлияет на задержку. Мы всегда рекомендуем тестировать ваш конкретный сценарий, чтобы понять, какую задержку вы можете ожидать.
Если у вас есть специфические требования к низкой задержке, пожалуйста, свяжитесь с нами.
Масштабирование
ClickPipes для Kinesis разработан для горизонтального и вертикального масштабирования. По умолчанию мы создаем группу потребителей с одним потребителем. Это может быть настроено во время создания ClickPipe или в любой другой момент в разделе Настройки -> Расширенные настройки -> Масштабирование.
ClickPipes обеспечивает высокую доступность с архитектурой, распределенной по зонам доступности. Это требует масштабирования как минимум до двух потребителей.
Независимо от количества работающих потребителей, отказоустойчивость доступна по умолчанию. Если потребитель или его инфраструктура потерпит неудачу, ClickPipe автоматически перезапустит потребителя и продолжит обработку сообщений.
Аутентификация
Для доступа к потокам Amazon Kinesis вы можете использовать учетные данные IAM или IAM роль. Для получения дополнительных деталей о том, как настроить IAM роль, вы можете обратиться к этому руководству для получения информации о том, как настроить роль, которая будет работать с ClickHouse Cloud.