> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Conecta fácilmente tus fuentes de datos de Amazon Kinesis a ClickHouse Cloud.

# Integración de Amazon Kinesis con ClickHouse Cloud

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

Los ClickPipes de Kinesis se pueden implementar y gestionar manualmente mediante la UI de ClickPipes, así como mediante programación con [OpenAPI](/docs/es/integrations/clickpipes/programmatic-access/openapi) y [Terraform](/docs/es/integrations/clickpipes/programmatic-access/terraform).

<div id="prerequisite">
  ## Requisito previo
</div>

Debe haberse familiarizado con la [introducción a ClickPipes](/docs/es/integrations/clickpipes/home) y haber configurado las [credenciales de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) o un [rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html). Siga la [guía de acceso basado en roles de Kinesis](/docs/es/integrations/clickpipes/kinesis/auth) para obtener información sobre cómo configurar un rol compatible con ClickHouse Cloud.

<div id="creating-your-first-clickpipe">
  ## Crear su primer ClickPipe
</div>

1. Acceda a la SQL Console de su servicio de ClickHouse Cloud.

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_service.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=ba65ca18b8e032a9d412b779741717f5" alt="Servicio de ClickPipes" size="lg" border width="1184" height="482" data-path="images/integrations/data-ingestion/clickpipes/cp_service.webp" />

2. Seleccione el botón `Data Sources` en el menú lateral izquierdo y haga clic en "Set up a ClickPipe"

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_step0.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=fb04bb07245be43cb784fa68cee62287" alt="Seleccionar importaciones" size="lg" border width="2606" height="790" data-path="images/integrations/data-ingestion/clickpipes/cp_step0.webp" />

3. Seleccione su fuente de datos.

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_step1.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=43a323a7dbf7daf017f2b8498336363d" alt="Seleccionar tipo de fuente de datos" size="lg" border width="2600" height="1890" data-path="images/integrations/data-ingestion/clickpipes/cp_step1.webp" />

4. Complete el formulario proporcionando a su ClickPipe un nombre, una descripción (opcional), su rol de IAM o sus credenciales, y otros detalles de conexión.

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_step2_kinesis.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=18a6e7aaabeafbfbaad10b0f0b3ee755" alt="Completar los detalles de la conexión" size="lg" border width="2266" height="1226" data-path="images/integrations/data-ingestion/clickpipes/cp_step2_kinesis.webp" />

5. Seleccione Kinesis Stream y el offset inicial. La UI mostrará un documento de ejemplo de la fuente seleccionada (topic de Kafka, etc.). También puede habilitar Enhanced Fan-out para Kinesis streams para mejorar el rendimiento y la estabilidad de su ClickPipe (puede encontrar más información sobre Enhanced Fan-out [aquí](https://aws.amazon.com/blogs/aws/kds-enhanced-fanout))

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_step3_kinesis.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=1ed04438f21e16e971e2ed13fe96b86e" alt="Configurar formato de datos y topic" size="lg" border width="2274" height="1540" data-path="images/integrations/data-ingestion/clickpipes/cp_step3_kinesis.webp" />

6. En el siguiente paso, puede seleccionar si desea ingestar datos en una nueva tabla de ClickHouse o reutilizar una existente. Siga las instrucciones en pantalla para modificar el nombre de la tabla, el esquema y la configuración. Puede ver una vista previa en tiempo real de sus cambios en la tabla de ejemplo de la parte superior.

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_step4a.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=e0cdb9469f6867e897cc77541af7f59b" alt="Configurar tabla, esquema y settings" size="lg" border width="2734" height="1328" data-path="images/integrations/data-ingestion/clickpipes/cp_step4a.webp" />

También puede personalizar la configuración avanzada usando los controles proporcionados

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_step4a3.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=db7cb839e136d26563b239937f029c7a" alt="Configurar controles avanzados" size="lg" border width="1592" height="338" data-path="images/integrations/data-ingestion/clickpipes/cp_step4a3.webp" />

7. Como alternativa, puede decidir ingestar sus datos en una tabla de ClickHouse existente. En ese caso, la UI le permitirá mapear campos de la fuente a los campos de ClickHouse en la tabla de destino seleccionada.

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_step4b.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=a5cb66aa9b3855c5d53b340dbd89b108" alt="Usar una tabla existente" size="lg" border width="2738" height="1322" data-path="images/integrations/data-ingestion/clickpipes/cp_step4b.webp" />

8. Por último, puede configurar los permisos para el usuario interno de ClickPipes.

**Permisos:** ClickPipes creará un usuario dedicado para escribir datos en una tabla de destino. Puede seleccionar un rol para este usuario interno usando un rol personalizado o uno de los roles predefinidos:

* `Full access`: con acceso completo al clúster. Puede resultar útil si usa una vista materializada o un Diccionario con la tabla de destino.
  * `Only destination table`: solo con permisos `INSERT` sobre la tabla de destino.

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_step5.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=71ea5baaa2c38fcc83b160f4856264ab" alt="Permisos" border width="2736" height="1318" data-path="images/integrations/data-ingestion/clickpipes/cp_step5.webp" />

9. Al hacer clic en "Complete Setup", el sistema registrará su ClickPipe y podrá verlo en la tabla de resumen.

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_success.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=ce045b4a85e7f294d23c03897e9ce11f" alt="Aviso de éxito" size="sm" border width="613" height="212" data-path="images/integrations/data-ingestion/clickpipes/cp_success.webp" />

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_remove.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=83b452ee5d8017da1b1c0d50cf8a491d" alt="Aviso de eliminación" size="lg" border width="2756" height="1320" data-path="images/integrations/data-ingestion/clickpipes/cp_remove.webp" />

La tabla de resumen ofrece controles para mostrar datos de ejemplo de la fuente o de la tabla de destino en ClickHouse

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_destination.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=cb3ebed0c324cb30c6cbf35726b3bec7" alt="Ver destino" size="lg" border width="2758" height="1316" data-path="images/integrations/data-ingestion/clickpipes/cp_destination.webp" />

Así como controles para eliminar el ClickPipe y mostrar un resumen del trabajo de ingestión.

<Image img="https://mintcdn.com/private-7c7dfe99/Rm4A9_kDxZf0ApeE/images/integrations/data-ingestion/clickpipes/cp_overview.webp?fit=max&auto=format&n=Rm4A9_kDxZf0ApeE&q=85&s=1ce91f5079842cfc66a4c88919f2e061" alt="Ver resumen" size="lg" border width="3436" height="1076" data-path="images/integrations/data-ingestion/clickpipes/cp_overview.webp" />

10. **¡Enhorabuena!** Ha configurado correctamente su primer ClickPipe. Si se trata de un ClickPipe de streaming, se ejecutará continuamente e ingestará datos en tiempo real desde su fuente de datos remota. De lo contrario, ingestará el lote y finalizará.

<div id="supported-data-formats">
  ## Formatos de datos admitidos
</div>

Los formatos admitidos son:

* [JSON](/docs/es/reference/formats/JSON/JSON)

<div id="compression">
  ## Compresión
</div>

ClickPipes para Kinesis detecta y descomprime automáticamente los registros comprimidos. A diferencia de Kafka, donde la biblioteca cliente gestiona la descompresión de forma transparente, Kinesis entrega bytes sin procesar; ClickPipes se encarga de ello sin necesidad de configuración.

Se admiten los siguientes codecs de compresión:

* **gzip**
* **zstd**
* **lz4**
* **snappy** (formato framed)

La compresión se detecta automáticamente mediante bytes mágicos en cada registro. Si no se encuentra ninguna firma de compresión conocida, el registro se trata como sin comprimir. El tipo de compresión detectado también se muestra durante la inferencia de esquema, para que la vista previa de datos de muestra en la UI muestre correctamente los datos descomprimidos.

<Note>
  La detección automática es segura para formatos basados en texto, como JSON y CSV, ya que los caracteres ASCII imprimibles nunca coincidirán con los bytes mágicos de compresión.
</Note>

<div id="supported-data-types">
  ## Tipos de datos admitidos
</div>

<div id="standard-types-support">
  ### Compatibilidad con tipos estándar
</div>

Actualmente, ClickPipes admite los siguientes tipos de datos de ClickHouse:

* Tipos numéricos básicos: \[U]Int8/16/32/64, Float32/64 y BFloat16
* Tipos enteros grandes: \[U]Int128/256
* Tipos Decimal
* Boolean
* String
* FixedString
* Date, Date32
* DateTime, DateTime64 (solo zonas horarias UTC)
* Enum8/Enum16
* UUID
* IPv4
* IPv6
* todos los tipos LowCardinality de ClickHouse
* Map con claves y valores que usan cualquiera de los tipos anteriores (incluidos los Nullable)
* Tuple y Array con elementos que usan cualquiera de los tipos anteriores (incluidos los Nullable, con un solo nivel de profundidad)
* Tipos SimpleAggregateFunction (para destinos AggregatingMergeTree o SummingMergeTree)

<div id="variant-type-support">
  ### Compatibilidad con el tipo Variant
</div>

Puede especificar manualmente un tipo Variant (como `Variant(String, Int64, DateTime)`) para cualquier campo JSON
del flujo de datos de origen. Debido a la forma en que ClickPipes determina qué subtipo de Variant debe usar, solo se puede usar un tipo entero o de fecha y hora
en la definición de Variant; por ejemplo, `Variant(Int64, UInt32)` no es compatible.

<div id="json-type-support">
  ### Compatibilidad con el tipo JSON
</div>

Los campos JSON que siempre son un objeto JSON pueden asignarse a una columna de destino de tipo JSON. Tendrá que cambiar manualmente la
columna de destino al tipo JSON deseado, incluidas las rutas fijas o excluidas.

<div id="kinesis-virtual-columns">
  ## Columnas virtuales de Kinesis
</div>

Se admiten las siguientes columnas virtuales para el stream de Kinesis. Al crear una nueva tabla de destino, se pueden añadir columnas virtuales con el botón `Add Column`.

| Nombre             | Descripción                                                                  | Tipo de dato recomendado |
| ------------------ | ---------------------------------------------------------------------------- | ------------------------ |
| \_key              | Clave de partición de Kinesis                                                | String                   |
| \_timestamp        | Marca de tiempo aproximada de llegada de Kinesis (precisión de milisegundos) | DateTime64(3)            |
| \_stream           | Nombre del stream de Kinesis                                                 | String                   |
| \_sequence\_number | Número de secuencia de Kinesis                                               | String                   |
| \_raw\_message     | Mensaje completo de Kinesis                                                  | String                   |

El campo \_raw\_message puede usarse cuando solo se necesita el registro JSON completo de Kinesis (por ejemplo, al usar las funciones [`JsonExtract*`](/docs/es/reference/functions/regular-functions/json-functions#jsonextract-functions) de ClickHouse para rellenar una vista materializada
posterior). Para esos pipes, eliminar todas las columnas "no virtuales" puede mejorar el rendimiento de ClickPipes.

<div id="limitations">
  ## Limitaciones
</div>

* [DEFAULT](/docs/es/reference/statements/create/table#default) no se admite.
* De forma predeterminada, los mensajes individuales están limitados a 16 MB (sin comprimir) cuando se utiliza el tamaño de réplica más pequeño (XS), y a 32 MB (sin comprimir) con réplicas más grandes. Los mensajes que superen este límite se rechazarán con un error. Si necesita mensajes más grandes, póngase en contacto con el equipo de soporte.

<div id="performance">
  ## Rendimiento
</div>

<div id="batching">
  ### Procesamiento por lotes
</div>

ClickPipes inserta datos en ClickHouse por lotes. Esto evita crear demasiadas partes en la base de datos, lo que puede provocar problemas de rendimiento en el clúster.

Los lotes se insertan cuando se cumple uno de los siguientes criterios:

* El tamaño del lote alcanza el tamaño máximo (100,000 filas o 32MB por 1GB de memoria de la réplica)
* El lote ha permanecido abierto durante el tiempo máximo (5 segundos)

<div id="latency">
  ### Latencia
</div>

La latencia (definida como el tiempo transcurrido entre el envío del mensaje de Kinesis al stream y el momento en que el mensaje está disponible en ClickHouse) dependerá de varios factores (p. ej., la latencia de Kinesis, la latencia de red y el tamaño/formato del mensaje). El [procesamiento por lotes](#batching) descrito en la sección anterior también afectará a la latencia. Recomendamos siempre probar su caso de uso concreto para entender qué latencia puede esperar.

Si tiene requisitos específicos de baja latencia, [contáctenos](https://clickhouse.com/company/contact?loc=clickpipes).

<div id="active-shards">
  ### Segmentos activos
</div>

Recomendamos encarecidamente limitar la cantidad de segmentos activos simultáneamente para ajustarla a sus requisitos de throughput.  En un stream de Kinesis "On Demand", AWS asignará automáticamente una cantidad correspondiente de segmentos en función del throughput,
pero en los streams "Provisioned", aprovisionar demasiados segmentos puede causar latencia, como se describe a continuación, además de aumentar los costos, ya que el precio de Kinesis para esos streams se calcula "por segmento".

Si su aplicación productora escribe continuamente en una gran cantidad de segmentos activos, esto puede causar latencia si su pipe no tiene suficiente escala para procesar esos segmentos de forma eficiente.  Según los límites de throughput de Kinesis,
ClickPipes asigna una cantidad específica de "workers" por réplica para leer los datos de los segmentos.  Por ejemplo, en el tamaño más pequeño, una réplica de ClickPipes tendrá 4 de estos hilos de trabajo.  Si el productor escribe
en más de 4 segmentos al mismo tiempo, los datos de los segmentos "adicionales" no se procesarán hasta que haya un hilo de trabajo disponible.  En particular, si el pipe usa "enhanced fanout", cada hilo de trabajo se suscribirá a un
único segmento durante 5 minutos, y no estará disponible para leer ningún otro segmento durante ese tiempo.  Esto puede provocar "picos" de latencia en múltiplos de 5 minutos.

<div id="scaling">
  ### Escalado
</div>

ClickPipes para Kinesis está diseñado para escalar tanto horizontal como verticalmente. De forma predeterminada, creamos un grupo de consumidores con un solo consumidor. Esto puede configurarse durante la creación del ClickPipe o en cualquier otro momento en **Settings** -> **Advanced Settings** -> **Scaling**.

ClickPipes ofrece alta disponibilidad con una arquitectura distribuida entre zonas de disponibilidad.
Para ello, es necesario escalar a al menos dos consumidores.

Independientemente del número de consumidores en ejecución, hay tolerancia a fallos por diseño.
Si un consumidor o la infraestructura subyacente falla,
el ClickPipe reiniciará automáticamente el consumidor y seguirá procesando mensajes.

<div id="authentication">
  ## Autenticación
</div>

Para acceder a los streams de Amazon Kinesis, puedes usar [credenciales de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) o un [rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html). Para obtener más información sobre cómo configurar un rol de IAM, puedes [consultar esta guía](/docs/es/integrations/clickpipes/kinesis/auth), donde se explica cómo configurar un rol compatible con ClickHouse Cloud
