HaozeeWu opened a new pull request, #11798:
URL: https://github.com/apache/gravitino/pull/11798

   ### What changes were proposed in this pull request?
   
   This PR adds automatic partition-level statistics aggregation for Hive 
partitioned tables, enabling the REST API (`GET /tables/{table}`) to return a 
table-level `totalSize` by summing up partition-level `totalSize` values at 
query time.
   
   **Changes include:**
   
   1. New `listPartitionsByNames` API — Added to `HiveClient`, `HiveShim`, 
`HiveShimV2`, `HiveShimV3` and `HiveClientImpl`. This method fetches partition 
objects by a list of partition names, enabling batched metadata loading.
   
   2. Batched partition statistics aggregation — Added 
`aggregatePartitionTotalSize()` in `HiveCatalogOperations`. It uses 
`listPartitionNames` (lightweight, strings only) followed by batched 
`listPartitionsByNames` calls (batch size = 1000) to sum `totalSize` from all 
partitions. The aggregated values are written into `HiveTable.properties()` 
**in memory only** and are NOT persisted back to HMS.
   
   3. Lazy trigger — Aggregation is skipped if the table-level `totalSize` 
property already exists, avoiding redundant computation.
   
   ### Why are the changes needed?
   
   Hive Metastore stores statistics at the partition level only. When a 
partitioned table is described via Hive CLI, Hive internally iterates all 
partitions and sums their stats in memory. Gravitino lacked this capability, so 
the REST API returned no `totalSize` for partitioned Hive tables. This PR 
replicates Hive's behavior with a memory-efficient batched approach.
   
   ### Does this PR introduce _any_ user-facing change?
   
   - **Yes** — For Hive partitioned tables that have partition-level statistics 
but no table-level statistics, the REST API and Java Client `loadTable()` will 
now include `totalSize` and `numPartitions` in `table.properties()`.
   - **No breaking changes** — The aggregation happens transparently at query 
time and does not modify HMS data.
   
   ### How was this patch tested?
   
   1. Created a Hive partitioned table with 3 partitions.
   2. Verified via `curl GET /tables/{table}` that `totalSize` equals the sum 
of partition-level values.
   3. Verified non-partitioned tables and tables with existing table-level 
stats are unaffected.


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to