Saltar al contenido principal

Descripción

Apache Avro es un formato de serialización orientado a filas que utiliza codificación binaria para procesar datos de forma eficiente. El formato AvroConfluent admite leer y escribir mensajes codificados en Avro mediante Confluent Schema Registry (o servicios compatibles con su API). Cada mensaje utiliza el wire format de Confluent: un byte mágico (0x00), seguido de un ID de esquema de 4 bytes en formato big-endian, seguido del dato binario de Avro. Durante la lectura, ClickHouse resuelve el ID de esquema consultando el registro. Durante la escritura, ClickHouse registra el esquema derivado de las columnas de salida y antepone el ID resultante a cada fila. Los esquemas se almacenan en caché para un rendimiento óptimo.

Correspondencia de tipos de datos

La siguiente tabla muestra todos los tipos de datos admitidos por el formato Apache Avro y sus correspondientes tipos de datos de ClickHouse en las consultas INSERT y SELECT. ** El tipo Variant acepta implícitamente null como valor de un campo, por lo que, por ejemplo, union(T1, T2, null) de Avro se convertirá en Variant(T1, T2). Como resultado, al generar Avro desde ClickHouse, siempre tenemos que incluir el tipo null en el conjunto de tipos de union de Avro, ya que durante la inferencia del esquema no sabemos si algún valor es realmente null. *** Tipos lógicos de Avro Tipos de datos lógicos de Avro no compatibles:
  • time-millis
  • time-micros
  • duration

Configuración del formato

Ejemplos

Lectura desde Kafka

Para leer un topic de Kafka codificado en Avro mediante el motor de tabla Kafka, utilice la configuración format_avro_schema_registry_url para indicar la URL del registro de esquemas.

Escribir en Kafka

Para escribir mensajes de AvroConfluent en un topic de Kafka, configure tanto la URL del registro de esquemas como el nombre del subject. El esquema se registra automáticamente en el registro con la primera escritura.

Uso de la autenticación básica

Si tu registro de esquemas requiere autenticación básica (p. ej., si usas Confluent Cloud), puedes proporcionar credenciales codificadas en URL en el parámetro format_avro_schema_registry_url.

Solución de problemas

Para supervisar el progreso de la ingestión y depurar los errores del consumidor de Kafka, puedes consultar la tabla del sistema system.kafka_consumers. Si tu implementación tiene varias réplicas (p. ej., ClickHouse Cloud), debes usar la función de tabla clusterAllReplicas.
Si tiene problemas con la resolución del esquema, puede usar kafkacat con clickhouse-local para diagnosticar el problema:
Última modificación el 19 de junio de 2026