Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

496
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!