Hi there,

I’m Raymond from LinkedIn big data platform org.

I have a question regarding the capability to create a new table without 
assigning new IDs in the schema. Currently, BaseMetastoreCatalog.create() calls 
the public TableMetadata.newTableMetadata() which then calls the 
package-private newTableMetadata() method. The package-private 
newTableMetadata() method takes in an Iceberg schema and always reassigns the 
ids in the schema to get a freshSchema and use that for creating the new 
TableMetadata. This means, currently when we create a table, the IDs will 
always be reassigned.

I wonder if we can expose a possibility to create a table using the input 
Iceberg schema as-is (without freshly assigning ids to it). I have the 
following arguments to support this:


  *   It seems when an Iceberg schema is created, it’s already guaranteed that 
the ids are consistent from creation. I tried to create a new Schema with 
duplicate ids, and it fails at creation time, this means the creation already 
takes care of ID consistency. So, I wonder if that reassign id step really adds 
value to making the schema consistent.
  *   From a user perspective, if we introduce this new capability, we will 
have a guaranteed way to create Iceberg tables with the ids we specif. We then 
will be able to create Iceberg tables with identical schema (of same ids), and 
thus their files can be reused between each other. A simple use case is that we 
can directly use AppendFiles API to add files from one table to the other 
without worrying their IDs discrepancies.

Let me know how you think this might be beneficial, or I’m missing anything 
here?

Thanks,
Raymond

Reply via email to