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

Интеграция 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.

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

  • Full access: с полным доступом к кластеру. Может быть полезно, если вы используете materialized view или словарь с целевой таблицей.
    • 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 не поддерживается.
  • Размер отдельных сообщений по умолчанию ограничен 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.