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

- В левом меню нажмите кнопку
Data Sourcesи выберите «Set up a ClickPipe».

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

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

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

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

Также вы можете настроить расширенные параметры с помощью предоставленных элементов управления.

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

- Наконец, вы можете настроить права доступа для внутреннего пользователя ClickPipes.
Права доступа: ClickPipes создаст отдельного пользователя для записи данных в целевую таблицу. Вы можете выбрать роль для этого внутреннего пользователя, используя пользовательскую роль или одну из предопределённых ролей:
Full access: с полным доступом к кластеру. Это может быть полезно, если вы используете материализованное представление или Dictionary с целевой таблицей.Only destination table: с правамиINSERTтолько для целевой таблицы.

- После нажатия «Complete Setup» система зарегистрирует ваш ClickPipe, и вы сможете увидеть его в сводной таблице.


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

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

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