- Le plus récent
- Le plus de votes
- La plupart des commentaires
Based on the error message and your description, it appears you're encountering an issue with AWS Glue's Iceberg REST catalog when evolving a schema with a StructType field. The specific error "Cannot parse to an integer value: id: 5.0" suggests there's a problem with how field IDs are being handled during schema evolution.
Looking at the AWS Glue Iceberg implementation, field IDs are critical components in Iceberg table schemas. The IcebergStructField requires an integer ID that uniquely identifies each field within the schema, which is used for schema evolution and field tracking. Similarly, the IcebergSchema contains fields that are defined as arrays of IcebergStructField objects.
The error indicates that somewhere in the process, a field ID that should be an integer (in your case, likely field ID 5) is being interpreted or transmitted as a floating-point number (5.0), causing the parsing error.
This does appear to be a bug in how AWS Glue's Iceberg REST catalog is handling schema evolution with struct types. Since you mentioned this was working previously (until September 18th), it's possible that a recent change or update to the service introduced this regression.
As for workarounds:
- You could try creating a new table with the complete schema instead of evolving an existing one
- If possible, add the struct fields one at a time rather than all at once
- Try using a different client library temporarily if available
I would recommend raising this as a bug with the AWS Glue team, as it appears to be an issue with how the Glue Iceberg REST catalog is handling field IDs during schema evolution specifically for struct types. Include the error message, your code, and the fact that this functionality was working previously to help them diagnose the issue.
Sources
IcebergStructField - AWS Glue
IcebergSchema - AWS Glue
UpdateIcebergTableInput - AWS Glue
Hello,
As a workaround did u try using alter table command in spark env to check if it’s working fine?
https://iceberg.apache.org/docs/latest/spark-ddl/
Also as you have mentioned, it was working fine till last week, It would be worth checking with AWS support team where you can include the details like working behavior before Thursday, error message, PyIceberg version being used, rest catalog configs etc and they’ll have the resources to investigate further and get the rca and solution
Hello,
As a workaround did u try using alter table command in spark env to check if it’s working fine?
https://iceberg.apache.org/docs/latest/spark-ddl/
Also as you have mentioned, it was working fine till last week, It would be worth checking with AWS support team where you can include the details like working behavior before Thursday, error message, PyIceberg version being used, rest catalog configs etc and they’ll have the resources to investigate further and get the rca and solution
We are experiencing the same issue while evolving the schema of a table that contains an existing map column.
Failed to add column: Malformed request: Cannot parse to an integer value: element-id: 3.0
org.apache.iceberg.exceptions.BadRequestException: Malformed request: Cannot parse to an integer value: element-id: 3.0
Contenus pertinents
- demandé il y a 8 mois
- demandé il y a 8 mois
- demandé il y a 21 jours
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a un an

You could try creating a new table with the complete schema instead of evolving an existing one Not possible since our requirements require constant schema evolution and its not feasible to recreate tables and migrate data everytime
If possible, add the struct fields one at a time rather than all at once Does not work
Try using a different client library temporarily if available While using a different catalog is a completely valid option, we have already filtered them for our use case and AWS Glue is our most suited option so we would like to stick to it