> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Легко подключайте источники данных Amazon Kinesis к ClickHouse Cloud.

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

export const Image = ({img, alt, size = "lg", background}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  const backgroundColor = background === "white" ? "white" : background === "black" ? "rgb(31 31 28)" : undefined;
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} style={{
    backgroundColor
  }} />
      </Frame>
    </div>;
};

Kinesis ClickPipes можно развертывать и настраивать вручную через интерфейс ClickPipes, а также программно с помощью [OpenAPI](/ru/integrations/clickpipes/programmatic-access/openapi) и [Terraform](/ru/integrations/clickpipes/programmatic-access/terraform).

<div id="prerequisite">
  ## Предварительные требования
</div>

Вы уже ознакомились с [введением в ClickPipes](/ru/integrations/clickpipes/home) и настроили [учетные данные IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) или [роль IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html). Сведения о том, как настроить роль для работы с ClickHouse Cloud, см. в [руководстве по ролевому доступу Kinesis](/ru/integrations/clickpipes/kinesis/auth).

<h2 id="creating-your-first-clickpipe">
  Создание первого ClickPipe
</h2>

1. Откройте SQL Console для вашего сервиса ClickHouse Cloud.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_service.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=5d65f3fd8e67f7942506fb6b3a317280" alt="Сервис ClickPipes" size="lg" border width="1184" height="482" data-path="images/integrations/data-ingestion/clickpipes/cp_service.webp" />

2. В левом меню нажмите кнопку `Data Sources`, затем — "Set up a ClickPipe"

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_step0.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=6c32efedf2f71424ffa85131206a1ddd" alt="Выбор импорта" size="lg" border width="2606" height="790" data-path="images/integrations/data-ingestion/clickpipes/cp_step0.webp" />

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

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_step1.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=6cd630f65f95d10320dd1754d723db19" alt="Выбор типа источника данных" size="lg" border width="2600" height="1890" data-path="images/integrations/data-ingestion/clickpipes/cp_step1.webp" />

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

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_step2_kinesis.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=1301fee72ffc23ecc21ba9de04f7c74d" alt="Заполнение сведений о подключении" size="lg" border width="2266" height="1226" data-path="images/integrations/data-ingestion/clickpipes/cp_step2_kinesis.webp" />

5. Выберите поток Kinesis, **Data format** и начальное смещение. Для `Protobuf` загрузите файл `.proto` или сериализованный `FileDescriptorSet` (максимум 768 КиБ). Schema registry не требуется.

   В интерфейсе отображаются примеры данных из выбранного потока. Параметр **Use Kinesis Enhanced Fan-Out** включён по умолчанию. Подробнее см. в [документации Amazon Kinesis](https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html).

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_step3_kinesis.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=a1d6a4366dc0225c7527d63e1884d009" alt="Настройка формата данных и топика" size="lg" border width="2274" height="1540" data-path="images/integrations/data-ingestion/clickpipes/cp_step3_kinesis.webp" />

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

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_step4a.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=a0cfcc25b866eabba6a8aa960ed4d759" alt="Настройка таблицы, схемы и параметров" size="lg" border width="2734" height="1328" data-path="images/integrations/data-ingestion/clickpipes/cp_step4a.webp" />

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

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_step4a3.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=e98eb3691b457502e1611b11e3fcc905" alt="Настройка дополнительных параметров" size="lg" border width="1592" height="338" data-path="images/integrations/data-ingestion/clickpipes/cp_step4a3.webp" />

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

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_step4b.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=96b126b12b6e4287fb89564dcf44238c" alt="Использование существующей таблицы" size="lg" border width="2738" height="1322" data-path="images/integrations/data-ingestion/clickpipes/cp_step4b.webp" />

8. Наконец, вы можете настроить разрешения для внутреннего пользователя ClickPipes.

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

* `Full access`: полный доступ к кластеру. Это может быть полезно, если вы используете materialized view или словарь вместе с целевой таблицей.
  * `Only destination table`: только разрешения `INSERT` для целевой таблицы.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_step5.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=a70767630ab370ac8efc4782e3062a05" alt="Разрешения" border width="2736" height="1318" data-path="images/integrations/data-ingestion/clickpipes/cp_step5.webp" />

9. Нажмите "Complete Setup", чтобы система зарегистрировала ClickPipe, после чего он появится в сводной таблице.

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_success.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=959709d2b23dc7c87145b974b88fef2f" alt="Уведомление об успешной настройке" size="sm" border width="613" height="212" data-path="images/integrations/data-ingestion/clickpipes/cp_success.webp" />

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_remove.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=9cb0c433770fbb79a70b110d7e411529" alt="Уведомление об удалении" size="lg" border width="2756" height="1320" data-path="images/integrations/data-ingestion/clickpipes/cp_remove.webp" />

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

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_destination.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=0f30e653f9f3bd7f5ca2d446cf6d3c71" alt="Просмотр пункта назначения" size="lg" border width="2758" height="1316" data-path="images/integrations/data-ingestion/clickpipes/cp_destination.webp" />

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

<Image img="https://mintcdn.com/private-7c7dfe99-parallel-read-in-order-multi-part/MiCB1is-Av7QztGF/images/integrations/data-ingestion/clickpipes/cp_overview.webp?fit=max&auto=format&n=MiCB1is-Av7QztGF&q=85&s=fc4a9c87f1634af23a951fca8316e665" alt="Просмотр обзора" size="lg" border width="3436" height="1076" data-path="images/integrations/data-ingestion/clickpipes/cp_overview.webp" />

10. **Поздравляем!** Вы успешно настроили свой первый ClickPipe. Если это стриминговый ClickPipe, он будет непрерывно работать и выполнять ингестию данных в реальном времени из удалённого источника. В противном случае он обработает батч и завершит работу.

<div id="supported-data-formats">
  ## Поддерживаемые форматы данных
</div>

Поддерживаются следующие форматы:

* [JSON](/ru/reference/formats/JSON/JSON)
* [Protobuf](/ru/reference/formats/Protobuf/Protobuf)

<div id="compression">
  ## Сжатие
</div>

ClickPipes для Kinesis автоматически определяет и распаковывает сжатые записи. В отличие от Kafka, где декомпрессия прозрачно выполняется клиентской библиотекой, Kinesis передаёт сырые байты — ClickPipes берёт это на себя без дополнительной настройки.

Поддерживаются следующие кодеки сжатия:

* **gzip**
* **zstd**
* **lz4**
* **snappy** (фреймированный формат)

Сжатие автоматически определяется по сигнатурам magic bytes в каждой записи. Если известная сигнатура сжатия не найдена, запись считается несжатой. Обнаруженный тип сжатия также определяется при автоопределении схемы, поэтому в предпросмотре данных в интерфейсе корректно отображаются распакованные данные.

<Note>
  Автоопределение безопасно для текстовых форматов, таких как JSON и CSV, поскольку печатные символы ASCII не могут совпасть с сигнатурами magic bytes сжатия.
</Note>

<div id="supported-data-types">
  ## Поддерживаемые типы данных
</div>

<div id="standard-types-support">
  ### Поддержка стандартных типов
</div>

В настоящее время 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)

<div id="variant-type-support">
  ### Поддержка типа варианта
</div>

Вы можете вручную указать тип варианта (например, `Variant(String, Int64, DateTime)`) для любого JSON-поля
в потоке исходных данных. Поскольку ClickPipes определяет, какой подтип варианта следует использовать, особым образом, в определении Variant можно использовать только один целочисленный тип или один тип datetime —
например, `Variant(Int64, UInt32)` не поддерживается.

<div id="json-type-support">
  ### Поддержка типа JSON
</div>

Поля JSON, которые всегда представляют собой объект JSON, можно назначить целевому столбцу типа JSON. Вам потребуется вручную изменить целевой столбец на нужный тип JSON, включая все фиксированные или пропускаемые пути.

<div id="kinesis-virtual-columns">
  ## Виртуальные столбцы Kinesis
</div>

Для потока 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*`](/ru/reference/functions/regular-functions/json-functions#jsonextract-functions) для заполнения материализованного
представления ниже по конвейеру). Для таких пайпов удаление всех «не виртуальных» столбцов может повысить производительность ClickPipes.

<div id="limitations">
  ## Ограничения
</div>

* [DEFAULT](/ru/reference/statements/create/table#default) не поддерживается.
* По умолчанию размер отдельных сообщений ограничен 16 МБ (без сжатия) для реплик минимального размера (XS) и 32 МБ (без сжатия) для более крупных реплик.  Сообщения, превышающие этот лимит, будут отклонены с ошибкой.  Если вам требуются сообщения большего размера, пожалуйста, обратитесь в службу поддержки.

<div id="performance">
  ## Производительность
</div>

<div id="batching">
  ### Батчинг
</div>

ClickPipes выполняет вставку данных в ClickHouse батчами. Это позволяет избежать создания слишком большого количества частей в базе данных, что может привести к проблемам с производительностью в кластере.

Батчи вставляются при выполнении одного из следующих условий:

* Размер батча достиг максимального значения (100 000 строк или 32 МБ на 1 ГБ памяти реплики)
* Батч оставался открытым в течение максимально допустимого времени (5 секунд)

<div id="latency">
  ### Задержка
</div>

Задержка (то есть время между отправкой сообщения Kinesis в поток и моментом, когда это сообщение становится доступным в ClickHouse) зависит от ряда факторов (например, задержки в Kinesis, сетевой задержки, размера/формата сообщения). Описанный в предыдущем разделе [батчинг](#batching) также влияет на задержку. Мы всегда рекомендуем протестировать ваш конкретный сценарий использования, чтобы понять, на какую задержку можно рассчитывать.

Если у вас есть особые требования к низкой задержке, [свяжитесь с нами](https://clickhouse.com/company/contact?loc=clickpipes).

<div id="active-shards">
  ### Активные сегменты
</div>

Большое число активных сегментов может снизить пропускную способность ClickPipe, если ClickPipe не [масштабирован](#scaling) для их обработки.

<div id="scaling">
  ### Масштабирование
</div>

ClickPipes для Kinesis спроектирован так, чтобы масштабироваться как по горизонтали, так и по вертикали. По умолчанию создается группа потребителей с одним потребителем. Это можно настроить при создании ClickPipe или позже в разделе **Настройки** -> **Дополнительные настройки** -> **Масштабирование**.

ClickPipes обеспечивает высокую доступность за счет архитектуры с распределением по зонам доступности.
Для этого требуется масштабирование как минимум до двух потребителей.

Независимо от количества запущенных потребителей отказоустойчивость обеспечивается самой архитектурой.
Если потребитель или лежащая в его основе инфраструктура выйдет из строя,
ClickPipe автоматически перезапустит потребителя и продолжит обработку сообщений.

<h2 id="authentication">
  Аутентификация
</h2>

Для доступа к потокам Amazon Kinesis можно использовать [учетные данные IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) или [роль IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html). Подробнее о настройке роли IAM см. в [этом руководстве](/ru/integrations/clickpipes/kinesis/auth), где описано, как настроить роль для работы с ClickHouse Cloud
