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

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

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

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

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

  1. Получите доступ к SQL Console для вашего ClickHouse Cloud Service.
Служба ClickPipes
  1. Выберите кнопку Data Sources в левом меню и нажмите "Настроить ClickPipe"
Выберите импорт
  1. Выберите источник данных.
Выберите тип источника данных
  1. Заполните форму, указав имя вашего ClickPipe, описание (по желанию), вашу роль IAM или учетные данные, а также другие данные подключения.
Заполните данные подключения
  1. Выберите поток Kinesis и начальное смещение. Интерфейс отобразит образец документа из выбранного источника (тема Kafka и др.). Вы также можете включить расширенный Fan-out для потоков Kinesis, чтобы улучшить производительность и стабильность вашего ClickPipe (Дополнительную информацию о расширенном Fan-out можно найти здесь)
Установите формат данных и тему
  1. На следующем шаге вы можете выбрать, хотите ли вы загружать данные в новую таблицу ClickHouse или использовать существующую. Следуйте инструкциям на экране, чтобы изменить имя таблицы, схему и настройки. Вы можете видеть предварительный просмотр ваших изменений в образце таблицы вверху.
Установите таблицу, схему и настройки

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

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

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

  • Полный доступ: с полным доступом к кластеру. Это может быть полезно, если вы используете материализованное представление или словарь с целевой таблицей.
  • Только целевая таблица: с разрешением INSERT только для целевой таблицы.
Разрешения
  1. Нажав "Завершить настройку", система зарегистрирует ваш ClickPipe, и вы сможете увидеть его в сводной таблице.
Уведомление об успешном завершении
Уведомление об удалении

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

Посмотреть целевую таблицу

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

Посмотреть сводку
  1. Поздравляем! Вы успешно настроили ваш первый 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Ключ партиции KinesisString
_timestampПриблизительное время прибытия Kinesis (миллисекундная точность)DateTime64(3)
_streamИмя потока KinesisString
_sequence_numberНомер последовательности KinesisString
_raw_messageПолное сообщение KinesisString

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