This would enable:
- to not ship unneeded things for the api users...the jdbcdriver contains a hiveserver2 with the full hive runtime and a metastore with the orm...all these are not neccessary
- make it easier for the api users to integrate with hive, because it wouldnt pull in transitively garbage
- would make it clear that where is the line...by enforcing the usage of these modules internally - it would make the external api for the users really usable - this is especcialy true for metastore; which currently have deep ties with the ql module.
HIVE-16214 I've identified some pieces which might be good to move to new modules...since that I've looked into it a bit more what could be done in this aspect...and to prevent going backward in this path; or get stuck at some point - I would like to be able to propose smaller changes prior to creating any modules...
The goal here is to remove the unneeded dependencies from the modules which doesn't necessarily need them: the biggest fish in this tank is the jdbc module, which currently ships with full hiveserver server side + all of the ql codes + the whole metastore (including the jpa persistence libs) - this makes the jdbc driver a really fat jar...
These changes will also reduce the hive binary distribution size; introducing service-client have reduce it by 20% percent alone.