[ 
https://issues.apache.org/jira/browse/IMPALA-14879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Csaba Ringhofer updated IMPALA-14879:
-------------------------------------
    Description: 
Currently Impala always reads the whole table during COMPUTE STATS (unless 
table sample is used).

It is possible to provide efficient incremental implementation in Iceberg (as 
long as deletes are ignored).
-  COMPUTE STATS should save stats in Puffin (e.g. Theta sketches for NDV) for 
the snapshot where the stats were computed
- subsequent COMPUTE STATS only need to read new files and merge the results 
with  the one in the snapshot

This would be both easier to use and more efficient than partition based 
COMPUTE INCREMENTAL STATS for Hive tables.

One issue to solve is how to store statistics not handled by Iceberg, e.g. 
max/avg length of strings.  

The following design doc has detailed discussion of stats usage of different 
engines in Iceberg, but did not come to a conclusion: 
https://docs.google.com/document/d/1H9uYt53Q1_CcOXOfLcr0hXRxvqflg_k_xeVorMLrWbM/edit?tab=t.0#heading=h.hg9vbmr09jb8

I see 3 ways to solve this:
1. wait till Iceberg has a solution for all of Impala's stats
2. write non-Icerberg compatible stats in an Impala specific key in Puffin
3. keep storing missing stats in HMS, but improve them to provide incremental 
support (e.g. store snapshot id)

  was:Currently Impala always reads the whole table during COMPUTE STATS 
(unless table sample is used). It is possible to provide efficient incremental 
implementation in Iceberg (as long as deletes are ignored) by saving stats in 
Puffin (e.g. Theta sketches for NDV) for the snapshot where the stats were 
computed. Subsequent COMPUTE STATS calls only need to read new file and merge 
the results with one in the snapshot.


> Support incremental stats in Iceberg tables with Puffin files
> -------------------------------------------------------------
>
>                 Key: IMPALA-14879
>                 URL: https://issues.apache.org/jira/browse/IMPALA-14879
>             Project: IMPALA
>          Issue Type: Epic
>            Reporter: Csaba Ringhofer
>            Priority: Major
>              Labels: iceberg
>
> Currently Impala always reads the whole table during COMPUTE STATS (unless 
> table sample is used).
> It is possible to provide efficient incremental implementation in Iceberg (as 
> long as deletes are ignored).
> -  COMPUTE STATS should save stats in Puffin (e.g. Theta sketches for NDV) 
> for the snapshot where the stats were computed
> - subsequent COMPUTE STATS only need to read new files and merge the results 
> with  the one in the snapshot
> This would be both easier to use and more efficient than partition based 
> COMPUTE INCREMENTAL STATS for Hive tables.
> One issue to solve is how to store statistics not handled by Iceberg, e.g. 
> max/avg length of strings.  
> The following design doc has detailed discussion of stats usage of different 
> engines in Iceberg, but did not come to a conclusion: 
> https://docs.google.com/document/d/1H9uYt53Q1_CcOXOfLcr0hXRxvqflg_k_xeVorMLrWbM/edit?tab=t.0#heading=h.hg9vbmr09jb8
> I see 3 ways to solve this:
> 1. wait till Iceberg has a solution for all of Impala's stats
> 2. write non-Icerberg compatible stats in an Impala specific key in Puffin
> 3. keep storing missing stats in HMS, but improve them to provide incremental 
> support (e.g. store snapshot id)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to