Перейти к основному содержанию
Перейти к основному содержанию

Интеграция Amazon Kinesis с ClickHouse Cloud

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

Вы ознакомились с введением в ClickPipes и настроили учётные данные IAM или роль IAM. Следуйте руководству по доступу к Kinesis на основе ролей, чтобы настроить роль для работы с ClickHouse Cloud.

Создание вашего первого ClickPipe

  1. Откройте SQL Console для своего сервиса ClickHouse Cloud.
Сервис ClickPipes
  1. В левом меню нажмите кнопку Data Sources и выберите «Set up a ClickPipe».
Выбор импортов
  1. Выберите источник данных.
Выбор типа источника данных
  1. Заполните форму, указав имя для ClickPipe, описание (необязательно), вашу IAM‑роль или учётные данные, а также другие параметры подключения.
Заполнение параметров подключения
  1. Выберите Kinesis Stream и начальное смещение (offset). В интерфейсе будет отображён пример документа из выбранного источника (Kafka topic и т. д.). Вы также можете включить Enhanced Fan-out для потоков Kinesis, чтобы повысить производительность и стабильность ClickPipe (подробнее об Enhanced Fan-out можно прочитать здесь).
Настройка формата данных и топика
  1. На следующем шаге вы можете выбрать, хотите ли вы выполнять приём данных в новую таблицу ClickHouse или использовать существующую. Следуйте инструкциям на экране, чтобы изменить имя таблицы, схему и настройки. В верхней части вы можете видеть предварительный просмотр изменений в примерной таблице в реальном времени.
Настройка таблицы, схемы и параметров

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

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

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

  • Full access: с полным доступом к кластеру. Это может быть полезно, если вы используете материализованное представление или Dictionary с целевой таблицей.
  • Only destination table: с правами INSERT только для целевой таблицы.
Права доступа
  1. После нажатия «Complete Setup» система зарегистрирует ваш ClickPipe, и вы сможете увидеть его в сводной таблице.
Уведомление об успешном создании
Уведомление об удалении

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

Просмотр целевой таблицы

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

Просмотр сводной информации
  1. Поздравляем! Вы успешно настроили свой первый 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.

NameDescriptionRecommended Data Type
_keyКлюч партиции KinesisString
_timestampПриблизительное время поступления в Kinesis (с точностью до миллисекунды)DateTime64(3)
_streamИмя потока KinesisString
_sequence_numberПорядковый номер в KinesisString
_raw_messageПолное сообщение KinesisString

Поле _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.