Hi all, I would like to bring up a design discussion regarding HIVE-12679 and HIVE-27473, which aim to support custom catalogs (such as AWS Glue, Iceberg REST catalog, etc.).
According to the design document [1] authored by Okumin, there are two realistic approaches to support custom catalogs: - Option 1: Make IMetaStoreClient pluggable - Option 2: Make ThriftHiveMetastore.Iface pluggable Option 1 is the original approach proposed in HIVE-12679, and after extensive discussion in [2], we concluded that to make this viable, we need to refactor the existing IMetaStoreClient implementation to be composable. This effort is now being tracked under HIVE-27473, which I am currently working on. The draft implementation and design document can be found in [3] and [4], respectively. While Option 2 could lead to a simpler integration model for new clients, it might break existing integrations. On the other hand, if we can make Option 1 clean enough, it would support new catalog integrations and help decompose the complicated dependencies around the HiveMetaStoreClient family. Given these trade-offs, I would like to ask for community feedback before proceeding further. In particular: - Should we continue refining Option 1 under HIVE-27473 with the proposed architecture, aiming to preserve compatibility? - Or should we lean toward Option 2, favoring simplicity at the potential cost of compatibility? It would be greatly appreciated if anyone could share their insights and feedback on this. Thank you for your time and input. Regards, Seonggon Namgung [1] https://docs.google.com/document/d/1fFvB0DAXJvPYv27R8nLa3tOUT67-hY0owxBrDY-BxUA (Okumin, HIVE-12679) [2] https://github.com/apache/hive/pull/4444 [3] https://github.com/apache/hive/pull/5771 [4] https://docs.google.com/document/d/1lppPj35fBOOCjGNIouoJCsniMPpyzWx3zcE7kvu0Be4 (SG, HIVE-27473)