IMPALA-2658, we can trade memory for more accurate NDV estimation. It is fascinating because tests showing error rate within 0.1% while no tremendous resource usage rise is found( #registers is 2 << 18). Users may have less complaint on computation precision in the future.
However, the road to apply high precision NDV to production environment is uneven.
1) We have to re-write sqls for a large number of historical workloads. Which is time costing and is prone to error.
2) Cluster users, aka sql writers, are reluctant to lower their expectations. It would be more convenient to have a way for cluster admins to adjust precision for each Admission Control queue according to cluster's resource usage(rough world).
Add a new query option DEFAULT_NDV_SCALE to change the default precision setting for NDV()
- Add a query option in FE
- If the option is set, use the matching NDV(<expr>, <scale>) function instead of NDV().