Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

497
Vistas
El esquema Avro con logicalType no se puede usar con el último confluent-kafka

Estamos utilizando kafka con esquemas avro y el registro de esquema configurado para compatibilidad FULL . Nuestros esquemas usan campos logicalType , por ejemplo:

 { "name": "MyRecord", "type": "record", "fields": [ { "name": "created_at", "type": [ "null", { "type": "long", "logicalType": "timestamp-millis" } ], "default": null } ] }

Esto funciona bien con la versión bastante antigua de confluent-kafka que estamos usando, ya que depende de avro-python3 1.8. Sin embargo, confluent-kafka reciente depende de avro-python3 1.10, y la serialización de mensajes falla con TypeError: unhashable type: 'mappingproxy'

Abrí un PR para solucionar el problema , pero no está recibiendo mucha atención.

Suponiendo que no se fusionará, ¿qué otras opciones tengo para actualizar a un confluent-kafka reciente?

La única solución que veo es deshacerme de logicalType , pero eso será un cambio de esquema incompatible, por lo que renuncio a la compatibilidad FULL o uso un tema diferente vinculado a un esquema diferente.

E incluso si lo anterior funciona, entonces tengo que convertir manualmente milis en marcas de tiempo, lo cual es un gran cambio en nuestra base de código.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Su esquema no es válido Avro. La documentación establece que “cuando se especifica un valor predeterminado para un campo de registro cuyo tipo es una unión, el tipo del valor predeterminado debe coincidir con el primer elemento de la unión” . Para su campo created_at " null " es el único valor predeterminado válido; de lo contrario, tendrá que definir su esquema como

 ... { "name": "created_at", "type": [ { "type": "long", "logicalType": "timestamp-millis" }, "null" ], "default": 1 } ...

esto tendría un valor predeterminado del 1 de enero de 1970 (en realidad, 1 milisegundo después de la medianoche), que podría no ser lo que desea.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda