Интеграция 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.
Permissions: ClickPipes создаст отдельного пользователя для записи данных в целевую таблицу. Вы можете выбрать роль для этого внутреннего пользователя, используя настраиваемую роль или одну из предопределённых ролей:
Full access: с полным доступом к кластеру. Может быть полезно, если вы используете materialized view или словарь с целевой таблицей.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 не поддерживается.
- Размер отдельных сообщений по умолчанию ограничен 8 МБ (в несжатом виде) при использовании минимального размера реплики (XS) и 16 МБ (в несжатом виде) для более крупных реплик. Сообщения, превышающие этот лимит, будут отклонены с ошибкой. Если вам требуются сообщения большего размера, свяжитесь со службой поддержки.
Производительность
Пакетирование
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.