ZENOTME commented on issue #1202: URL: https://github.com/apache/iceberg-rust/issues/1202#issuecomment-2798502790
Hi @hugokitano, seems this example uses the map type in the wrong way. ``` // Create the key_value field with metadata let mut key_value_metadata = HashMap::new(); key_value_metadata.insert(PARQUET_FIELD_ID_META_KEY.to_string(), "3".to_string()); let key_value_field = Field::new( "struct", arrow_schema::DataType::Struct(vec![ Arc::new(key_field.clone()), Arc::new(value_field.clone()), ].into()), false ).with_metadata(key_value_metadata.clone()); ``` should be ``` // Create the key_value field with metadata // let mut key_value_metadata = HashMap::new(); // key_value_metadata.insert(PARQUET_FIELD_ID_META_KEY.to_string(), "3".to_string()); let key_value_field = Field::new( DEFAULT_MAP_FIELD_NAME, arrow_schema::DataType::Struct(vec![ Arc::new(key_field.clone()), Arc::new(value_field.clone()), ].into()), false ); ``` In iceberg, it doesn't have the concept of key_value field I think. This field is used for the arrow to represent map array(Because it represent map as array of struct): 1. The key value field name should be "key_value". 2. key value field don't need to have field id. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org