Registros compatibles con Kafka ClickPipes
- Registros compatibles con Confluent: cualquier registro compatible con la API de Confluent Schema Registry, como el propio Confluent Schema Registry y Redpanda Schema Registry. Admite Avro y Protobuf.
- AWS Glue Schema Registry: para datos Avro serializados con AWS Glue SerDe, normalmente procedentes de Amazon MSK.
Registros compatibles con Confluent
Configuración
- Proporcione una ruta completa al
subjectdel esquema (p. ej.,https://registry.example.com/subjects/events)- Opcionalmente, puede hacer referencia a una versión específica agregando
/versions/[version]a la URL (de lo contrario, ClickPipes recuperará la versión más reciente).
- Opcionalmente, puede hacer referencia a una versión específica agregando
- Proporcione una ruta completa al ID del esquema (p. ej.,
https://registry.example.com/schemas/ids/1000) - Proporcione la URL raíz del registro de esquemas (p. ej.,
https://registry.example.com)
Conectividad de red
- La URL del registro de esquemas debe usar
https://. - Si el nombre de host del registro se resuelve en una dirección privada, debe ser accesible a través de un endpoint privado inverso seleccionado para el ClickPipe; de lo contrario, la comprobación de conectividad durante la configuración fallará.
Cómo funciona
- Si el valor del registro incluye un ID de esquema, se usará para recuperar el esquema.
- Si el valor del registro no incluye un ID de esquema, se usará el ID de esquema o el nombre del subject especificado en la configuración de ClickPipe para recuperar el esquema.
- Si el valor del registro se escribe sin un ID de esquema incrustado y en la configuración de ClickPipe no se especifica ningún ID de esquema ni nombre de subject, el esquema no se recuperará y el mensaje se omitirá; se registrará un
SOURCE_SCHEMA_ERRORen la tabla de errores de ClickPipes. - Si el valor del registro no se ajusta al esquema, se omitirá y se registrará un
DATA_PARSING_ERRORen la tabla de errores de ClickPipes. - Solo para esquemas Protobuf: ClickPipes cargará todos los esquemas importados definidos como dependencias. Los esquemas Avro con referencias externas aún no son compatibles.
_key.id, ClickPipes resuelve el ID de esquema incrustado en la clave de Kafka independientemente del valor del registro. La clave puede usar un ID de esquema diferente, pero debe usar la misma familia de registros de esquemas y formato de serialización que el valor. Los esquemas de clave resueltos se almacenan en caché y los cambios de esquema se detectan automáticamente.
AWS Glue Schema Registry
AWSKafkaAvroSerializer en un topic de Amazon MSK), ClickPipes puede resolver esos esquemas directamente desde AWS Glue Schema Registry. Glue utiliza un formato wire y una API distintos de los registros compatibles con Confluent, por lo que se configura por separado.
Actualmente, la configuración de AWS Glue Schema Registry solo está disponible a través de la consola de ClickHouse Cloud. No es compatible con la API de ClickPipes ni con el Terraform provider.
Solo Avro. Los registros de AWS Glue solo son compatibles con el formato Avro. Glue SerDe también puede encapsular JSON y Protobuf, pero ClickPipes no los admite y se rechazan al crear el pipe.
Configuración
No hay ninguna URL de registro que configurar. Cada registro generado por Glue SerDe incluye el ID de su propia versión de esquema, que ClickPipes resuelve mediante
glue:GetSchemaVersion y almacena en caché, con una llamada a la API por cada versión de esquema distinta. La evolución del esquema se gestiona automáticamente: cuando los registros cambian a una nueva versión de esquema a mitad del flujo, esta se resuelve la primera vez que se encuentra.
Configuración de IAM
Opción A: reutilizar la identidad de IAM del broker
- Rol de IAM: Añade la instrucción a la política de permisos del rol configurado para MSK.
- Credenciales de IAM: Añade la instrucción a la política de permisos del principal de IAM asociado a la clave de acceso.
Opción B: usar un rol dedicado para el registro
Solo para implementaciones en AWS. Esta opción requiere un servicio de ClickHouse Cloud desplegado en AWS, ya que depende del rol de AWS IAM del servicio. Si su servicio se ejecuta en GCP o Azure y el broker no usa autenticación de IAM, no podrá configurar un rol dedicado para el registro.
1
Obtenga el ARN del rol de IAM del servicio de ClickHouse
Abra el servicio, seleccione la pestaña Settings, desplácese hasta la sección Network security information y copie el valor de Service role ID (IAM), un ARN con el formato
arn:aws:iam::123456789012:role/CH-S3-example-service-Role. En adelante, se hará referencia a este valor como {ClickHouse_IAM_ARN}. Cada servicio de ClickHouse desplegado en AWS tiene su propio rol, por lo que este valor es distinto para cada servicio.2
Cree el rol de IAM del registro
Cree un rol de IAM en su cuenta de AWS. El nombre del rol debe comenzar por Configure la política de permisos
ClickHouseAccessRole-.Configure la política de confianzaReemplace {ClickHouse_IAM_ARN} por el valor del paso anterior.3
Configure el ClickPipe
Pegue el ARN del nuevo rol en el campo ARN del rol de IAM del asistente.
Ámbito de los recursos de IAM. Estos ejemplos siguen la política documentada por AWS para deserializadores y la política administrada
AWSGlueSchemaRegistryReadonlyAccess, que otorgan glue:GetSchemaVersion sobre "*". ClickPipes comprueba de forma independiente cada esquema resuelto con el Nombre del registro configurado y rechaza las versiones de cualquier otro registro.Solución de problemas
Limitaciones
- Solo se admite Avro. JSON Schema y Protobuf a través de Glue SerDe no son compatibles.
- Solo fuentes de Kafka. Los ClickPipes de Kinesis no pueden usar un registro de Glue.
Mapeo de esquemas
_key.:
- Si el esquema contiene un campo que no está incluido en el mapeo de destino de ClickHouse, ese campo se ignora.
- Si al esquema le falta un campo definido en el mapeo de destino de ClickHouse, la columna de ClickHouse se rellenará con un valor “cero”, como 0 o una cadena vacía. Tenga en cuenta que las expresiones
DEFAULTno son compatibles. - Si el campo del esquema y la columna de ClickHouse son incompatibles, las inserciones de esa fila o mensaje fallarán, y el error se registrará en la tabla de errores de ClickPipes. Tenga en cuenta que se admiten varias conversiones implícitas (p. ej., entre tipos numéricos), pero no todas (p. ej., un campo de tipo registro de Avro no puede insertarse en una columna
Int32de ClickHouse).