Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

498
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda